嵌入另一个类+构造函数的一个类的对象数组

时间:2014-01-21 14:41:54

标签: c++ constructor

我有3个课程,如下所示:

class A
{
  public:
    char * buf;
};

class C
{
  public:
   A * _ptrToA;

  private:
   func1();
};

class B
{
  public:
    A * _ptrToA;

  private:
    C  objsOfC[10];

};

这里缺少的是,对于B类中每10个C类对象,需要分配ptrtoA。如何将值分配给所有10个对象?

还将如何/何时调用10个对象的构造函数。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果你的C类有一个构造函数:

C() : _ptrToA(new A) 
{
}

然后在创建B类对象时自动调用(对于所有10个对象C)。

总的来说:如果没有智能指针,请不要使用类似的指针,并了解构造函数。

答案 1 :(得分:0)

在C中创建构造函数,如

C(A * ptrToA)
{
    _ptrToA = ptrToA;
}

然后,在B中创建一个构造函数,

B(A * ptrToA) : objsOfC({ C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA), C(ptrToA)  })
{
}

但是当你有一个数百个大小的对象数组时,这将是一个完全混乱。

然后有一个对象指针数组

是明智的

如果是这样,您必须将代码更改为

B级 {

A * _ptrToA;
C ** objsOfC;

公共:

B(A * ptrToA, const int size) :_ptrToA(ptrToA), objsOfC(new C*[size])
{
    for ( int i = 0; i < size; ++i)
        objsOfC[i] = new C(ptrToA);
}

};

您需要在需要时取消分配内存。