$ cat -n cons.cpp
1 #include <iostream>
2
3 using namespace std;
4
5 int return1() {
6 return 1;
7 }
8
9 int main() {
10 cout<< return1.m_one << endl;
11 return 0;
12 }
$ g++ cons.cpp
cons.cpp: In function 'int main()':
cons.cpp:10: error: request for member 'm_one' in 'return1',
which is of non-class type 'int()()'
$
也许这是编译器特定的,但在上面的g ++中报告的int()()
中额外的一对括号是否存在一些意义/含义?为什么g ++将函数报告为具有int()()类型?
除非我完全误解了代码,你试图访问一个函数指针的成员?因此错误。它被报告为int()(),它看起来很像int(*)(void),它是一个指向一个函数的指针,它使用void并返回int。可能是错误的,所以只是猜测 – Lefteris 2012-02-26 08:21:01
是的,代码是错误的,我期望一个错误。 – Lazer 2012-02-26 08:41:42
在gcc(4.4。1)(仅限C),错误完全不同。 错误:请求成员m_one中的东西不是结构或联合 在g ++(4.4.1)中:我得到: | error:请求成员'm_one'在'return1'中,它是非类类型的'int()' 因此,它完全是编译器特定的,并且在相同编译器的版本之间不同。 – Lefteris 2012-02-26 08:47:35