C++ C++;从数组访问重载构造函数
我试图从类B的数组中调用重载构造函数A(int,int),它只调用了一个()构造函数,而不是一个(int,int) 为什么会这样。?C++ C++;从数组访问重载构造函数,c++,arrays,constructor,C++,Arrays,Constructor,我试图从类B的数组中调用重载构造函数A(int,int),它只调用了一个()构造函数,而不是一个(int,int) 为什么会这样。? 我该怎么办呢?一旦对象已经构建好,就不能重新构建它 您有几个选择: 使用构造函数初始值设定项列表: 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::method
我该怎么办呢?一旦对象已经构建好,就不能重新构建它 您有几个选择:
- 使用构造函数初始值设定项列表:
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. }
- 使用向量和默认值初始化构造函数初始值设定项列表中的所有元素
class B { std::vector<A> a; ... }; void B::methodB() { a.emplace_back(1, 1); }
B类 { std::载体a; 公众: B():a{3,{1,1} {} };
methodB
不是构造函数-您不能影响任何成员变量的构造-这已经完成并消除了。
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}}
{}
};