2013-05-19 22 views
0

我是C++中的一名初學者,他對動態數組感到困惑。我在這個網站上找到了一種方法,但我似乎無法使它在對象中的「數組對象」中工作。當我讀取Rec變量時它總是中斷。如何分配「對象數組」的指針(C++)

這是類定義:

class AlcXIO { 
private: 
    AlcX_IO_Record* Rec[1]; 
    int _Count; 
public: 
    int count(); 
    void Init(CL_DisplayWindow window); 
    void AddInput(int IO_ID); 
    AlcX_IO_Record* GetRec(int RecID); 
    void on_input_down(const CL_InputEvent &key, const CL_InputState &state); 
    void on_input_up(const CL_InputEvent &key, const CL_InputState &state); 
}; 

的AddInput()函數:

void AlcXIO::AddInput(int IO_ID) { 
    size_t newSize = this->_Count +1; 
    AlcX_IO_Record* newArr = new AlcX_IO_Record[newSize]; 

    memcpy(newArr, Rec, _Count * sizeof(AlcX_IO_Record)); 

    _Count = newSize; 
    delete [] Rec; 
    Rec[0] = newArr; 
} 

我知道,我可能是錯的:Rec[0] = newArr

但將其更改爲Rec = newArr給我一個錯誤:「表達式必須是可修改的左值」

歡迎任何解決方案,謝謝。

回答

1

從聲明中刪除[1],您將它用作指針,而不是現在聲明的指針數組。該錯誤源於試圖覆蓋您將其聲明爲數組的事實 - 即使它在技術上兼容,該類型也不能在運行時以編程方式更改。

+0

它給我的「錯誤C2229:類‘AlcXIO’具有非法零大小的數組」 :( 編輯:將其更改爲'AlcX_IO_Record *建議;'給了我另一個錯誤「錯誤C2100:非法的間接尋址」 –

+0

你 –

+0

將其更改爲'AlcX_IO_Record * Rec;'在REC = newArr上給我另一個錯誤「錯誤C2100:非法間接尋址」 –