2017-09-07 21 views
-3

私はC++の初心者であり、この割り当てが与えられています。このヘッダーファイルを使用する必要があります。このヘッダーファイルから、関連する抜粋を提供しました。クラス名はPayoffAsianCallです。C++のoverload()括弧の演算子

PayoffAsianCall(double strike); 
virtual double operator()(std::vector<double> & spot) const; 
virtual ~PayoffAsianCall(){} 

私は私のメインのファイル にオペレータにいくつかのものを割り当てる私は

PayoffAsianCall &PayoffAsianCall::virtual double operator()(std::vector<double> & spot) const { do stuff here} 

を使用しているが、これは働いていません。誰かが私に正しい構文を教えてくれますか?

+0

[これは不正ではないC++のテキストの早い段階でカバーする必要があります。](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – user4581301

+0

ようこそ!問題の声明が単に「動作しない」場合は、ソリューションを提供することは困難です。実際の結果とどのように違うのか、そしてどのようなことが起こるのかをより完全に説明するために質問を編集してください。何が良い説明になるかについてのヒントについては、[ask]を参照してください。 –

答えて

0

初心者のための基礎を得ることは常に難しく、C++はそれほど簡単ではありません。だからここにあなたのためのいくつかのヒントです:

は、私たちはあなたの試みで始まる

PayoffAsianCall & PayoffAsianCall ::仮想ダブル演算子()(のstd ::ベクトル&スポット)のconst {行うものここ}

:まず最初に注意する必要が戻り値の型は、あなたが戻り値の型があると言っている

PayoffAsianCall &

btw。あなたは本当に&の位置に注意を払う必要があります。この場合、refereneceとそのPayoffAsianCall参照を意味するので、PayoffAsianCall &ではなく、PayoffAsianCall &であったはずです。とにかく

しかし:クラス定義で使用すると、戻り値はdoubleであると言うので、それはdoubleする必要があります:

ダブルPayoffAsianCall ::仮想ダブル演算子()(のstd ::ベクトル&スポット)のconst {行いますここにいるもの}

これはすでに優れています。クラス名であるvirtualdoubleは名前とは関係がありません。virtualはクラス定義自体で使用するために予約されているため、演算子名が必要です。すでに世話をしています。だから我々は今持っている:

ダブルPayoffAsianCallを::演算子()(のstd ::ベクトル&スポット)のconst {ここにものを行う}

That'sすべて。前述のように、&を正しく配置することをお勧めします。 It'sないスタンダード::ベクトル基準スポットが、STD ::ベクトル基準地点:

ダブルPayoffAsianCall ::演算子()(スタンダード::ベクトル&スポット)のconst {ここでものを行う}

完了。

+0

ありがとう、それはとても便利でした。私は大学院生です。何らかの理由で、教授たちは、人々がGoogleを使ってこれを理解しようとするのは生産的だと思っています。私はまた、良い参考文献のための推薦を感謝したいと思います。文字通り約24時間前にC++を学び始めました。再度、感謝します! – AliceinWonderLand

+0

@AliceinWonderLand答えが役に立ったら、答えを受け入れることを忘れないでください。書籍の推薦はそれほど簡単ではありませんが、C++の作成者であるBjarne Stroustrupの「Programming:Principles and Practice Using C++」になります。前半は簡単なものだが、ペースは速くなる。だから、あなたはいくつかの経験を積んだ後、いくつかのより高度な質問を得るだけでなく、開始を得るために適しています。 – DrSvanHay

関連する問題