【问题标题】:what is the meaning of this syntax [duplicate]这个语法是什么意思[重复]
【发布时间】:2013-04-01 22:24:48
【问题描述】:

以下代码编译。但是,如果我编写代码以使用jar 调用方法test,它会给我一个编译错误。这里到底发生了什么。

#include <iostream>    

using namespace std;

class A {
public:
  void test() {
    cout << "working" << endl;
  }
};

int main() {
  A foo;
  A jar();
}

【问题讨论】:

标签: c++ most-vexing-parse


【解决方案1】:
 A jar();

声明一个名为jar的函数,不带任何参数,返回类型为A类的对象。

你不能在main 中声明一个函数,因此你得到了错误。

【讨论】:

  • 这不是真正的 MVP (SomeType var(SomeClass());),但足够接近。你可以声明函数,但不能像对象一样使用它。
【解决方案2】:

如果你试图声明一个名为 ptr 的函数指针,你应该这样声明它:

A (*ptr)(void);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2012-08-21
    • 2011-10-27
    • 1970-01-01
    • 2017-09-28
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多