2013-02-18 52 views
-1

我得到了錯誤:類錯誤,預計;前(令牌

expected ';' before '(' token.

這究竟是爲什麼我怎樣才能解決這個問題

#include <iostream> 

class AB { 
int n; 
AB(int x) { n = x;} 
}; 


class ED { 

AB blee(1); 
}; 

回答

3

這是最有可能被解析錯誤和失敗?

AB blee(1); 

如果你想初始化一個類型爲AB的數據成員,你不能這樣做。在C++ 11中,你可以這樣做:

AB blee{1}; 

AB blee = 1; 

或者,您可以在ED的構造(S)做到這一點。這適用於C++ 11和C++ 03。

class ED { 
    ED() : blee(1) {} 
    AB blee; 
}; 
+0

如果寫入AB blee = 1我得到錯誤:非整數類型「AB」的靜態數據成員的無效類初始化 也如果寫入 – user2085124 2013-02-18 23:29:55

+0

@ user2085124您是否具有C++ 11支持? – juanchopanza 2013-02-18 23:30:27

+0

我正在編譯DevC++,而不是GCC,所以我認爲不是 – user2085124 2013-02-18 23:32:05

1

你想用你的AB blee(1);做什麼?它既不是函數聲明,也不是函數調用。要調用一個函數,你可以把它放在ED的某個成員的主體中,並且離開AB,只留下blee(1);

要聲明一個功能,你需要把一個類型(例如,int)的括號內:AB blee(int);

+0

我的目標是實現當我調用主函數ED對象;'使object.blee.n = 1 – user2085124 2013-02-18 23:40:24

3

必須通過構造函數通過成員初始化實例:

class ED { 
    ED() : blee(1) {} 

    AB blee; 
}; 
+0

如果你沒有C++ 11,你只有*必須*做到這一點。 – juanchopanza 2013-02-18 23:31:20

相關問題