我有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个对象的构造函数。
感谢您的帮助。
答案 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);
}
};
您需要在需要时取消分配内存。