我在C ++中有一个非常简单的问题。 假设我将类定义为:
类PS { 私人:
int value; int m; public: PS(); PS(int value, int m); PS(int m); };
现在我想定义一个包含这种类型元素的数组。例如,
PS t [3];
但是,我希望此数组中的所有元素都具有m = 2。我该怎么办?我假设我必须使用继承一些如何,对吧? 所以例如我不想做这样的事情:
>PS t[3];
>t[0].PS(2);
>t[1].PS(2);
>t[2].PS(2);
我想为t的所有元素做一个节目。
答案 0 :(得分:1)
STL Vector类比c阵列更受欢迎。使用一个,您可以这样做:
std::vector<PS> t(3, PS(2));
答案 1 :(得分:1)
使用构造函数,您只需使用大括号初始化:
PS t[] = { PS(2) , PS(2), PS(2) };
或者按照@ 0x499602D2的建议,因为PS有一个非显式构造函数,只需:
PS t[] = { 2, 2, 2 };
我还建议您使用std::array<>
而不是C风格的数组。
答案 2 :(得分:1)
不初始化值是不安全的,但您可以使用C ++ 11功能,该功能允许您直接在类定义中初始化变量:
class PS {
private:
int value;
int m = 2;
public:
PS() {};
};
如果您使用的是旧版本的C ++,则可以考虑重载默认构造函数
class PS {
private:
int value;
int m;
public:
PS(int _m = 2) : m(_m) {};
};