我是C ++的新手,并获得了这项任务。我必须使用这个头文件,我从中提供了相关的摘录。类名是PayoffAsianCall。
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 :(得分:0)
对于初学者来说总是很难获得一些理由而且c ++并不容易驯服。所以这里有一些提示:
我们从您的尝试开始
PayoffAsianCall&amp; PayoffAsianCall :: virtual double operator()(std :: vector&amp; spot)const {do stuff here}
首先:首先要注意的是返回类型,你说返回类型是
PayoffAsianCall&amp;
顺便说一句。你应该真正关注&
的位置。在这种情况下,它意味着referenece
及其PayoffAsianCall参考,所以它应该是PayoffAsianCall&amp;而不是PayoffAsianCall&amp ;.
但无论如何:在类定义中,你说返回值是double
所以它应该是double
:
double PayoffAsianCall :: virtual double operator()(std :: vector&amp; spot)const {do stuff here}
那已经好多了。现在我们需要运算符名称,因为它是一个类成员,名称包含类名virtual
而double
与名称无关,virtual
保留用于类定义本身所以这里没有空间,双重已经被照顾。所以我们现在有:
double PayoffAsianCall :: operator()(std :: vector&amp; spot)const {do stuff here}
就是这样。如前所述,我建议正确放置&
。它不是std :: vector reference-spot而是std :: vector-reference spot:
double PayoffAsianCall :: operator()(std :: vector&amp; spot)const {do stuff here}
进行。