我有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);
}
};
由您决定在需要时将内存分配。