我是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],您将其用作指针,而不是现在声明的指针数组。错误源于试图覆盖您将其声明为数组的事实-即使在技术上兼容,也无法在运行时通过编程方式更改类型。
关于c++ - 如何分配“对象数组”的指针(C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16635331/