我没有看到任何解决我特定代码问题的内容。
我在课堂上有一个bool功能; bool函数名为:
bool Triplet::operator ==(const Triplet& operand)const {
if( (data[0] == operand.data[0]) &&
(data[1] == operand.data[1]) &&
(data[2] == operand.data[2]))
return true;
...
我正试图在Main中调用它,但是只是在调用正确时遇到问题。显然,如果我在措辞中遗漏了任何东西,它会给出一个错误,我只有很少的语句,如果我尝试使用函数的整个措辞,我会得到错误,我需要一个分号,但我已经有了在通话结束时分号,所以我知道别的东西是错的,我根本无法弄清楚出了什么问题! 任何帮助,将不胜感激!
提前致谢。
答案 0 :(得分:11)
你可以使用==
来调用它(这就是运算符重载的作用;它会重载运算符的含义):
Triplet a;
Triplet b;
if (a == b) //< calls your operator==
您也可以使用函数调用语法调用它:
if (a.operator==(b)) //< also calls your operator==
但您通常不希望或不需要这样做。
您可能需要这样做的一个案例是,如果由于某种原因您有一个操作员模板,其模板参数无法从参数中推断出来(operator==
很少见,但我看到了用于operator[]
之前。)
答案 1 :(得分:8)
这是一个C ++运算符重载,它的设计使它可以改变普通运算符的行为:
Triplet a, b;
if (a == b) // calls Triplet::operator==()
如果确实想要,您可以按名称调用运营商:
if (a.operator==(b))
答案 2 :(得分:2)
bool
只是返回类型。它与调用函数的方式无关。正如在James的例子中,这个函数是一个运算符,因此你将像使用普通语法一样使用运算符来调用它。