函数参数:指向对象数组的指针

Deu*_*ion 5 c++ arrays parameters pointers

在我的main函数中,我创建了一个特定类"Menu"的对象数组

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

Menu menu[2];
// Create menu [0], [1]
Function(POINTER_TO_ARRAY);
Run Code Online (Sandbox Code Playgroud)

问题:编写Function参数的正确方法是什么?

我尝试:

Function(&menu);
Run Code Online (Sandbox Code Playgroud)

并在头文件中:

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 *[]
Run Code Online (Sandbox Code Playgroud)

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

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

hmj*_*mjd 10

宣言:

void Function(Menu* a_menus); // Arrays decay to pointers.
Run Code Online (Sandbox Code Playgroud)

调用:

Function(menu);
Run Code Online (Sandbox Code Playgroud)

但是,您需要通知Function()数组中有多少条目.因为这是C++建议使用std::array或者std::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
                  });
}
Run Code Online (Sandbox Code Playgroud)