我有类似如下:构建对象在另一个类变量初始化后
QuadMesh.h:
#include "StructureIpsim.h" // this is a struct
class QuadMesh {
public:
QuadMesh(StructureIpsim s) {//do stuff}
};
SEMPotential.h:
#include "QuadMesh.h"
#include "SpecialFuncs.h"
class SEMPotential {
public:
StructureIpsim SI;
QuadMesh mesh;
SEMPotential(//args);
};
SEMPotential::SEMPotential(//args) {
// init structure in here, need to call functions from SpecialFuncs.h to do so
// How to construct the QuadMesh object mesh? Can't put in initialization list.
}
正如你所看到的, QuadMesh
对象需要一个StructureIpsim
sruct,但是在传递之前,必须使用SEMPotential
的构造函数中的几个函数来初始化此结构到QuadMesh
构造函数。这是什么标准的方法?
一个好的设计是'StructureIpsim'通过它的构造函数正确设置(它的参数是通过构造函数初始化列表从'SEMPotential'的构造函数提供的) –
如果这是不可能的,可以使'mesh通过使用'std :: shared_ptr'来延迟构建,而不是在你准备好之前你不分配它。 –
另一种选择是'QuadMesh'有一个默认的构造函数,它什么都不做,并且你准备好了一个函数来在你准备好之后进行设置 –