我在一个名为Employee的类中工作,我正在尝试创建一个以数组作为参数的构造函数
class Employee
{
Employee * array[9];
public:
Employee(Employee * arr[]);
}
但这不起作用,所以我想通过引用传递arr
,除了我不能只添加&在arr
之前...任何想法?
感谢
答案 0 :(得分:0)
如果您想要传入一个数组,您还需要传递大小:
class Employee
{
public:
Employee(Employee* pE, std::size_t size) { ... }
};
因为你将把数组降级为指针,否则将不知道大小。当您传递指针时,不需要通过引用传递它,因为您可以更改元素的值,它将指向相同的内存位置(也就是说,它与通过引用传递没有区别)。
使用std::array
或std::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)
这些都可行。
此外,数组总是通过引用传递。