【问题标题】:Alternative to ->operator()替代 ->operator()
【发布时间】:2015-10-23 19:29:10
【问题描述】:

如果objp 是一个指针,有没有比调用objp->operator()(x, y, z) 更好的语法? &objp(x, y, z) 不起作用。由于所有的符号,这很难谷歌。对不起,这很愚蠢。

【问题讨论】:

  • 是的,它很难看,但至少很明显你在用那行代码做什么。我更喜欢这种语法而不是任何替代方法,因为我可以立即看到正在发生的事情。对于(*objp)(x,y,z) 这样的事情,我必须停下来思考几秒钟。

标签: c++ pointers overloading operator-keyword


【解决方案1】:

分两行;

MyType&  functorRef  = *objp;   // Use the appropriate type name.
functorRef(x, y, z);

或者在 C++11 中你可以使用 auto。

auto&  functorRef  = *objp;
functorRef(x, y, z);

【讨论】:

    【解决方案2】:

    您可以使用(*objp)(x, y, z); 作为替代。

    【讨论】:

      【解决方案3】:

      (*objp)(x, y, z); 是显而易见的选择。我不确定你是否认为这样更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多