c++ - 如何添加到对象数组指针C++

标签 c++ arrays class pointers object

我正在尝试将一个对象添加到作为参数传递的对象数组中。具体来说,我有一个按钮数组,我正在向按钮数组添加一个后退按钮。我怎样才能正确地做到这一点?当我尝试下面的代码时,从原始指针数组传递的按钮出现了一些奇怪的故障。

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/

相关文章:

c - 将文件中的数据保存到数组中

ruby - 如何让子类变量回到ruby中的父类

oop - 快速将单个文件类转换为文件夹类

c++ - 无法在 std::map<std::string,std::shared_ptr<class>> 中设置值

c++ - 什么是 "Microsoft C++ exception"?

c++ - 将二进制编码的十进制 (BCD) 解码为无符号整数

c++ - 如何将 static_cast 与双重类型转换一起使用

javascript - 从数组中删除特定字符

c++ - 对 3D vector 对进行排序

JavaScript 错误 : "ReferenceError: array is not defined"