我重载了operator(),如下所示:
#include <iostream>
using namespace std;
class Test {
public:
Test() {};
void operator () (Test);
};
void Test::operator () (Test test) {
cout << "yes";
}
int main() {
Test test;
(test);
}
当我运行它时,“是”没有出现? 上面的代码有什么问题吗?
答案 0 :(得分:6)
应该是
test( test );
以便调用operator()
。当您只是在不触发operator()
的变量名称周围添加大括号时 - 两个大括号都必须遵循变量名称。
答案 1 :(得分:4)
使用operator()
的签名,您需要使用以下内容进行调用:
test(test);
或可能
test(Test());
(test)
只是一个类型为Test
且无法执行任何操作的表达式。
答案 2 :(得分:0)
Run it like test()
。这是一个函数运算符重载。
答案 3 :(得分:0)
您应该使用test();
而不是(test)
。这是在您更改签名以删除未使用的参数后...更改为void operator () ();