通过引用传递对象数组

时间:2013-11-15 18:01:32

标签: c++

我在一个名为Employee的类中工作,我正在尝试创建一个以数组作为参数的构造函数

class Employee 
{ 
Employee * array[9];
public:
Employee(Employee * arr[]);
}

但这不起作用,所以我想通过引用传递arr,除了我不能只添加&在arr之前...任何想法? 感谢

2 个答案:

答案 0 :(得分:0)

如果您想要传入一个数组,您还需要传递大小:

class Employee
{
public:
    Employee(Employee* pE, std::size_t size) { ... }
};

因为你将把数组降级为指针,否则将不知道大小。当您传递指针时,不需要通过引用传递它,因为您可以更改元素的值,它将指向相同的内存位置(也就是说,它与通过引用传递没有区别)。

使用std::arraystd::vector是更好的解决方案:

class Employee
{
public:
    Employee(const std::vector<Employee>& vec) { ... }
};

旁注:我不确定为什么你有一个Employee对象需要一组Employees来构造它。这似乎是设计问题的一个标志。

答案 1 :(得分:0)

如果您只想传递Employee类型的数组,那么您可以

Employee (Employee arr[])  要么 Employee (Employee * arr)

如果你想将一个POINTERS数组传递给Employee对象,那么你可以

Employee (Employee * arr[]) 要么 Employee (Employee ** arr)

这些都可行。

此外,数组总是通过引用传递。