c++ - 使用意外声明为函数的对象后解释 GCC 错误

标签 c++ gcc most-vexing-parse

以下是语言新手的常见错别字,他们认为他们在定义一个对象,但实际上是在声明一个函数:

struct T
{
   void foo() {}
};

int main()
{
   T obj();
   obj.foo();
}

GCC 4.1.2 的错误是:

In function 'int main()':
Line 9: error: request for member 'foo' in 'obj', which is of non-class type 'T ()()'
compilation terminated due to -Wfatal-errors.

为什么报文中的类型是T()()?我期望 T ()

最佳答案

IIRC 这只是一个编译器错误。 GCC 4.4 说 T() 而 4.2 为我说 T()()

关于c++ - 使用意外声明为函数的对象后解释 GCC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5259170/

相关文章:

linux - 制作文件问题: error at every line

c++ - 为什么在 : foo x( (bar()) ); 这样的构造函数调用中需要双括号

c++ - g++ 拒绝,clang++ 接受 : foo(x) ("bar") ("baz");

c++ - Shader编译失败后能否调用glShaderSource更新Shader源码?

c++ - 计算直线上点的投影的优化函数?

gcc - '-std' 和 '--std' 编译器标志之间的差异

c++ - (为什么)用临时/匿名对象实例化模板类是令人讨厌的解析?

C++ 根据给定的类型名从 Variant 返回数据

C++ 代码崩溃并显示 "free(): invalid next size"

C 对齐特定用例的字符串文字