0

我是 C++ 的初学者,对动态数组感到困惑。我在这个网站上找到了一种方法,但我似乎无法让它适用于对象中的“对象数组”。当我读取 Rec 变量时,它总是会中断。

这是类定义:

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给我一个错误:“表达式必须是可修改的左值”

欢迎任何解决方案,谢谢。

4

1 回答 1

1

从声明中删除 [1],您将其用作指针,而不是现在声明的指针数组。该错误源于试图覆盖您将其声明为数组的事实 - 即使它在技术上兼容,也无法在运行时以编程方式更改类型。

于 2013-05-19T13:50:41.967 回答