class A{
int a;
int b;
A(){}
A(int a, int b) : a(a), b(b){}
};
class B{
A[3] a;
public:
void methodB();
};
B::methodB{
a[0](1, 1); //I want array to use A(int, int)constructor not default one.
}
我试图从类B中的Array调用重载的构造函数A(int,int),它只调用A()构造函数而不是A(int,int) 为什么会这样? 我该怎么办?
答案 0 :(得分:1)
一旦物体已经构建完毕,你就无法重建它。
您有几个选择:
使用构造函数初始化列表:
class B
{
std::array<3, A> a;
public:
B() : a{{1, 1}, {2, 2}, {3, 3}}
{}
};
使用std::vector
并在需要时插入正确构造的对象
class B
{
std::vector<A> a;
...
};
void B::methodB()
{
a.emplace_back(1, 1);
}
使用向量并默认初始化构造函数初始化列表中的所有元素
class B
{
std::vector<A> a;
public:
B() : a{3, {1, 1}}
{}
};