从对象指针调用重载的operator()

And*_*dry 32 c++

考虑以下:

class MyClass {
public:
   int operator ()(int a, int b);
};
Run Code Online (Sandbox Code Playgroud)

当有:

MyClass* m = new MyClass();
Run Code Online (Sandbox Code Playgroud)

我想访问该operator()方法,所以我可以:

(*m)(1,2);
Run Code Online (Sandbox Code Playgroud)

但我可以这样做吗?

m->(1,2);
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 58

不是那种语法,但你可以这样做

 m->operator()(1,2);
Run Code Online (Sandbox Code Playgroud)

  • 但是请注意,如果您发现自己需要大量执行此操作,则仅定义普通成员函数可能会更容易且更易读。例如`m-> do_it(1,2);` (2认同)

小智 7

如果你不会改变m(它所指向的),你可以(*m)用一个参考来代替:

MyClass *m = new MyClass();
MyClass &r = *m;
r(1, 2);
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此答案