在我的主要功能中,我创建了一个特定类“菜单”的对象数组
当我调用一个函数时,我想提供一个指向该数组的指针。
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::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
});
}
关于c++ - 函数参数 : Pointer to array of objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866284/