c++ - 函数参数 : Pointer to array of objects

标签 c++ arrays pointers parameters

在我的主要功能中,我创建了一个特定类“菜单”的对象数组

当我调用一个函数时,我想提供一个指向该数组的指针。

Menu menu[2];
// Create menu [0], [1]
Function(POINTER_TO_ARRAY);

问题:函数参数的正确写法是什么?

我尝试:

Function(&menu);

在头文件中:

void Function(Menu *menu[]); // not working
error: Cannot convert parameter 1 from Menu(*)[2] to Menu *[]

void Function(Menu * menu); // not working
error: Cannot convert parameter 1 from Menu(*)[2] to Menu *[]

我想不出任何其他方法来做到这一点,也找不到解决这个特定问题的方法。

简单地说,我希望能够通过指针访问函数内的 Menu 数组。普通指针指向数组指针有什么区别?

最佳答案

声明:

void Function(Menu* a_menus); // Arrays decay to pointers.

调用:

Function(menu);

但是,您需要通知 Function() 数组中有多少条目。因为这是 C++ 建议使用 std::arraystd::vector知道它们的大小、开始和结束:

std::vector<Menu> menus;
menus.push_back(Menu("1"));
menus.push_back(Menu("2"));

Function(menus);

void Function(const std::vector<Menu>& a_menus)
{
    std::for_each(a_menus.begin(),
                  a_menus.end(),
                  [](const Menu& a_menu)
                  {
                      // Use a_menu
                  });
}

关于c++ - 函数参数 : Pointer to array of objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866284/

相关文章:

java - 它告诉我 NullPointerException 的原因

arrays - 在 Commodore BASIC 中填充数组 A$(X,X)?

c - 我正确加载我的字符数组吗?

c++ - 指针和新运算符

c++ - 在 linux 中为 c++ dev 配置 VSCode

c++ - 如何将新的 lambda 表达式分配给函数对象?

arrays - 在 shell 脚本中使用 awk 内的数组

pointers - 在结构字段中使用指针的区别

c++ - 克服rpc字节顺序转换

c++ - 使用ACE时有没有办法使用线程局部变量?