C++ 从 Array 访问重载的构造函数
Posted
技术标签:
【中文标题】C++ 从 Array 访问重载的构造函数【英文标题】:C++ Access to the overloaded constructor from Array 【发布时间】:2016-01-07 08:05:27 【问题描述】: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) 为什么会这样。? 我该怎么办??
【问题讨论】:
创建Minimal, Complete, and Verifiable Example 时,请确保它确实构建(除非您发布有关构建错误的帖子)。不要在问题中重新输入代码,而是复制并粘贴实际代码。methodB
不是构造函数——你不能影响任何成员变量的构造——这已经完成并且已经尘埃落定了。
【参考方案1】:
一旦对象已经被构造,你就不能再构造它。
你有几个选择:
使用构造函数初始化列表:
class B
std::array<3, A> a;
public:
B() : a1, 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() : a3, 1, 1
;
【讨论】:
以上是关于C++ 从 Array 访问重载的构造函数的主要内容,如果未能解决你的问题,请参考以下文章