我有類似如下:構建對象在另一個類變量初始化後
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'有一個默認的構造函數,它什麼都不做,並且你準備好了一個函數來在你準備好之後進行設置 –