#include <iostream>
class Car
{
private:
Car(){};
int _no;
public:
Car(int no)
{
_no=no;
}
void printNo()
{
std::cout<<_no<<std::endl;
}
};
void printCarNumbers(Car *cars, int length)
{
for(int i = 0; i<length;i++)
std::cout<<cars[i].printNo();
}
int main()
{
int userInput = 10;
Car *mycars = new Car[userInput];
for(int i =0;i < userInput;i++)
mycars[i]=new Car[i+1];
printCarNumbers(mycars,userInput);
return 0;
}
我想创建一个汽车阵列,但出现以下错误:
cartest.cpp: In function ‘int main()’:
cartest.cpp:5: error: ‘Car::Car()’ is private
cartest.cpp:21: error: within this context
有没有办法在不公开 Car() 构造函数的情况下进行初始化?
原文由 Dan Paradox 发布,翻译遵循 CC BY-SA 4.0 许可协议
没有。
但是看!如果您使用
std::vector<Car>
,就像您应该使用的那样(永远不要使用new[]
),那么您可以准确指定应该如何构造元素*。*好吧。您可以指定要复制的值。
像这样:
使用附加功能:
注意
printCarNumbers
确实应该设计不同,以接受两个表示范围的迭代器。