$ 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