我正在尝试将一个对象添加到作为参数传递的对象数组中。具体来说,我有一个按钮数组,我正在向按钮数组添加一个后退按钮。我怎样才能正确地做到这一点?当我尝试下面的代码时,从原始指针数组传递的按钮出现了一些奇怪的故障。
int createMenu(Button buttons[], int size)
{
//Stuff here
}
int menu(Button buttons[], int size, bool back)
{
Button * newButtons[size + 1];
for (int i = 1; i <= size; i++)
*newButtons[i] = buttons[i];
Button back(25, 19, "Back"); //Creates back button object
*newButtons[0] = back;
return createMenu(*newButtons, size + 1);
//Makes menu with the back button
}
感谢任何帮助。
最佳答案
在您的循环中,您引用了超出其边界的按钮 [size]。您还可以取消引用 newButtons 的成员而不对其进行初始化。当 createMenu
需要一个按钮数组时,您尝试传递一个指针数组。应该是这样的:
int menu(Button buttons[], int size, bool back)
{
Button * newButtons = new Button[size + 1];
for (int i = 0; i < size; i++)
newButtons[i + 1] = buttons[i];
newButtons[0] = Button(25, 19, "Back");
int result = createMenu(newButtons, size + 1);
delete [] newButtons;
return result;
}
关于c++ - 如何添加到对象数组指针C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24473411/