我有两个类,即 Flight
和 Runway
。现在我试图将这些对象的数组作为参数传递给函数。
void fun(Flight ptr1[],Runway ptr2[])
{
...
...
}
ptr1 应指向 Flight 对象数组,ptr2 应指向 Runway 对象数组。 现在在这个函数 fun() 中,我如何访问这些类的成员。我还可以使用 ptr1++ 或 ptr2++ 在对象之间移动吗? 另外我怎么称呼这个功能??像这样的东西 -
Flight array1[5];
Runway array2[2];
fun(array1,array2);
最佳答案
void fun(Flight ptr1[],Runway ptr2[])
被解释为
void fun(Flight *ptr1, Runway *ptr2)
这叫“分解”,我觉得很烂。主要是为了向后兼容C的一个特性。如果你要指针,指定指针,而不是数组,因为指针和数组是不同的东西。
你也可以这样做
void fun(Flight (&arr1)[5], Runway (&arr2)[7])
现在函数中的参数仍然是数组,而不是指针,所以 ++ arr1
是非法的并且 sizeof arr1/sizeof arr1[0]
是 5
。调用函数时的参数数组也必须是正确的大小,分别恰好为 5 和 7。在此上下文中,&
表示按引用传递,因此调用函数时不会复制数组。
您还可以利用模板系统为任何大小的参数数组生成函数:
template< size_t NF, size_t NR >
void fun(Flight (&arr1)[NF], Runway (&arr2)[NR])
这样的模板可以用任何大小的数组调用,NF 和 NR 将是设置为适当大小的整数常量。
关于c++ - 对象数组,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969063/