2011-04-20 95 views
2

所以我有這個類在頭C++類的數組初始化

class C{ 

    int b [2]; 

    init(); 

} 

和C.cpp我有

C::init(){ 

    bK [2] = {3,7}; 
} 

由此我嘗試初始化類變量b,其是一個數組

但隨後的編譯器返回錯誤expected ; before { tokenexpected primary expression before { token

我做錯了什麼,如何正確初始化數組類變量?

+0

這與您的其他問題有何不同? http://stackoverflow.com/questions/5732798/c-array-assignment-of-multiple-values – 2011-04-20 16:12:11

回答

3

;結束您的班級定義。

class C { 

    int b [2]; 

    init(); 

}; 

此外,您不能像標準C++中的聲明那樣初始化一個數組。

1

你不能在C++ 0x C++之前做到這一點。

0
C::init(){ 

    bK [0] = 3; 
    bk [1] = 7; 
} 
1

這是標準(2003)所不允許的。在課堂上聲明的數組不能初始化。

你可以做的是這樣的:

C::init(){ 
    b[0] = 3; 
    b[1] = 7; 
} 

在C++ 0x中,你可以做到這一點(如果您選擇使用std::vector):

class C 
{ 
    std::vector<int> b; 
    void init() 
    { 
     b = {3,7}; 
    } 
}; 

見在線演示:http://www.ideone.com/NN5aT

0

您應該聲明您的班級成員爲公共,私人或受保護的。你也需要爲你的init()返回一個類型。你也可能需要在你的類定義的末尾使用分號,這是你無法用C++類成員完成的。

您應該使用構造函數而不是init()。這樣你就不必在每次聲明一個對象後調用init(),它都會爲你完成。

class C{ 
private: 
    int b[2]; 
public: 
    C(); 

}; 

C::C() 
{ 
    b[0] = 2; 
    b[1] = 3; 
} 

編輯:做一些測試後,我發現這是越野車。上面的代碼沒有錯誤。如果你想內聯初始化整個數組,它必須在它的聲明語句中完成。