如何分配“对象数组”的指针(C ++)

时间:2013-05-19 13:48:29

标签: c++ arrays object dynamic resize

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

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

1 个答案:

答案 0 :(得分:1)

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