所以我有這個類在頭C++類的數組初始化
class C{
int b [2];
init();
}
和C.cpp我有
C::init(){
bK [2] = {3,7};
}
由此我嘗試初始化類變量b,其是一個數組
但隨後的編譯器返回錯誤expected ; before { token
和expected primary expression before { token
我做錯了什麼,如何正確初始化數組類變量?
所以我有這個類在頭C++類的數組初始化
class C{
int b [2];
init();
}
和C.cpp我有
C::init(){
bK [2] = {3,7};
}
由此我嘗試初始化類變量b,其是一個數組
但隨後的編譯器返回錯誤expected ; before { token
和expected primary expression before { token
我做錯了什麼,如何正確初始化數組類變量?
用;
結束您的班級定義。
class C {
int b [2];
init();
};
此外,您不能像標準C++中的聲明那樣初始化一個數組。
你不能在C++ 0x C++之前做到這一點。
C::init(){
bK [0] = 3;
bk [1] = 7;
}
這是標準(2003)所不允許的。在課堂上聲明的數組不能初始化。
你可以做的是這樣的:
C::init(){
b[0] = 3;
b[1] = 7;
}
在C++ 0x中,你可以做到這一點(如果您選擇使用std::vector
):
class C
{
std::vector<int> b;
void init()
{
b = {3,7};
}
};
您應該聲明您的班級成員爲公共,私人或受保護的。你也需要爲你的init()返回一個類型。你也可能需要在你的類定義的末尾使用分號,這是你無法用C++類成員完成的。
您應該使用構造函數而不是init()。這樣你就不必在每次聲明一個對象後調用init(),它都會爲你完成。
class C{
private:
int b[2];
public:
C();
};
C::C()
{
b[0] = 2;
b[1] = 3;
}
編輯:做一些測試後,我發現這是越野車。上面的代碼沒有錯誤。如果你想內聯初始化整個數組,它必須在它的聲明語句中完成。
這與您的其他問題有何不同? http://stackoverflow.com/questions/5732798/c-array-assignment-of-multiple-values – 2011-04-20 16:12:11