【问题标题】:Syntax to overload () parentheses operator in C++ [duplicate]C ++中重载()括号运算符的语法[重复]
【发布时间】:2017-09-07 05:33:02
【问题描述】:

我是 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}

但这一直不起作用。有人可以向我解释正确的语法吗?

【问题讨论】:

标签: c++ header overloading operator-keyword parentheses


【解决方案1】:

对于初学者来说,获得一些基础总是很困难,而且 c++ 也不是那么容易驯服的。所以这里有一些提示:

我们从您的尝试开始

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

首先:首先要注意的是返回类型,你说的返回类型是

PayoffAsianCall &

顺便说一句。你真的应该注意&amp; 的位置。在这种情况下,它表示 referenece 及其 PayoffAsianCall 参考,因此它应该是 PayoffAsianCall& 而不是 PayoffAsianCall &。

但无论如何:在类定义中你说返回值是double,所以它应该是double

double PayoffAsianCall::virtual double operator()(std::vector & spot) const { 在这里做事}

那已经好多了。现在我们需要操作符名称,因为它是一个类成员名称包括类名称virtualdouble与名称无关,virtual保留用于类定义本身所以没有这里有空间,双人间已经照顾好了。所以我们现在有:

double PayoffAsianCall::operator()(std::vector & spot) const { 在这里做事}

就是这样。如前所述,我建议正确放置&amp;。它不是 std::vector 参考点,而是 std::vector-reference 点:

double PayoffAsianCall::operator()(std::vector& spot) const { 在这里做事}

完成。

【讨论】:

  • 谢谢,这很有用。我是一名研究生,出于某种原因,教授们认为让人们尝试使用谷歌来解决这个问题是有成效的。我也很感激推荐一个好的参考文本。从字面上看,大约 24 小时前开始学习 C++。再次感谢!
  • @AliceinWonderLand 如果答案有用,请不要忘记接受答案。推荐一本书并不像听起来那么容易,但我敢打赌,c++ Bjarne Stroustrup 的创建者是“编程:使用 C++ 的原理和实践”。上半场很简单,但节奏很快。因此,它既适合入门,也适合在您获得一些经验后回答一些更高级的问题。
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 2011-12-03
  • 2017-10-14
  • 2012-09-23
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多