【问题标题】:Calling overloaded operator () from object pointer从对象指针调用重载运算符()
【发布时间】:2012-06-27 07:43:13
【问题描述】:

考虑以下几点:

class MyClass {
public:
   int operator ()(int a, int b);
};

当有:

MyClass* m = new MyClass();

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

(*m)(1,2);

但是我可以这样做吗?

m->(1,2);

【问题讨论】:

  • mydummy 上一秒,T 下一秒?

标签: c++


【解决方案1】:

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

 m->operator()(1,2);

【讨论】:

  • 但是请注意,如果您发现自己经常需要这样做,那么只定义一个普通的成员函数可能会更容易且更具可读性。例如m->do_it(1,2);
【解决方案2】:

如果您不更改 m(它指向的内容),您可以将 (*m) 替换为引用:

MyClass *m = new MyClass();
MyClass &r = *m;
r(1, 2);

更多详情请见this answer

【讨论】:

    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多