下面的代碼編譯。但是如果我使用編寫代碼來調用方法test
,它會給我一個編譯錯誤。這裏真正發生了什麼。這個語法的含義是什麼
#include <iostream>
using namespace std;
class A {
public:
void test() {
cout << "working" << endl;
}
};
int main() {
A foo;
A jar();
}
下面的代碼編譯。但是如果我使用編寫代碼來調用方法test
,它會給我一個編譯錯誤。這裏真正發生了什麼。這個語法的含義是什麼
#include <iostream>
using namespace std;
class A {
public:
void test() {
cout << "working" << endl;
}
};
int main() {
A foo;
A jar();
}
A jar();
聲明瞭一個名爲jar
不帶任何參數的功能,並返回類型爲A
類的對象。
你不能聲明函數內部main
,因此,你得到了錯誤。
它不是真正的MVP('SomeType var(SomeClass());'),但足夠接近。你可以聲明這個函數,但是你不能像對象一樣使用它。 – chris
如果你想聲明一個名爲函數指針ptr
你應該聲明它像:
A (*ptr)(void);
這不是一個變量聲明。 – chris
http://en.wikipedia.org/wiki/Most_vexing_parse – Pubby