C ++从Array访问重载的构造函数

时间:2016-01-07 08:05:28

标签: c++ arrays constructor

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) 为什么会这样? 我该怎么办?

1 个答案:

答案 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}}
        {}
    };