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



我有3个类,如下所示:

class A
{
  public:
    char * buf;
};
class C
{
  public:
   A * _ptrToA;
  private:
   func1();
};
class B
{
  public:
    A * _ptrToA;
  private:
    C  objsOfC[10];
};

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

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

感谢提前的帮助。

如果您的C类具有构造函数:

C() : _ptrToA(new A) 
{
}

然后,当创建B类的对象时,它将自动调用(对于所有10个对象c)。

一般说:不要在没有智能指针的情况下使用这样的指针,并了解构造函数。

在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);
}

};

由您决定在需要时将内存分配。

最新更新