这个语法是什么意思

时间:2013-04-01 22:24:49

标签: c++ most-vexing-parse

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

#include <iostream>    

using namespace std;

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

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

2 个答案:

答案 0 :(得分:7)

 A jar();

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

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

答案 1 :(得分:1)

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

A (*ptr)(void);