的2維矢量我有命名爲「CIRCUITO」(電路)在名爲「FactoryCircuit」一個「工廠」類對象矢量的矢量。的push_back在對象
vector< vector< Elemento*> >
「Elemento的」 是一個基類名爲 「resistenza,induttanza,conduttanza」(電阻,電感,電導)3派生類。這三個類是RCL組件。 (在該程序中,我必須計算I和Z.)
在內側矢量I可以只的push_back相同的組件的每一個「地點」。然後我把它們當作平行組件。 組件串聯的外部矢量rapresent位置。 因此,例如在[0]我可以有一個電阻,在[1]兩個電感,在[2]四個電容...
如果我試圖複製那個例子,我可以在main.cpp:
vector< vector<Elemento*> > circuito(3);
circuito[0].push_back(new Resistenza());
circuito[2].push_back(new Conduttanza());
circuito[2].push_back(new Conduttanza()); --->these "new" functions are three constructorS of the derived classes
circuito[2].push_back(new Conduttanza());
circuito[2].push_back(new Conduttanza());
circuito[1].push_back(new Induttanza());
circuito[1].push_back(new Induttanza());
circuito[0][0]->print();
circuito[0][1]->print(); //member function or R,C,L
circuito[0][2]->print();
這是正確的,但它運行時會崩潰。我的目標是建立在工廠三個成員函數用於創建R,C,L,但在此之前我必須瞭解如何使用向量....
然而,我試圖創建的工廠命名的成員函數「 CreaResistenza」做同樣的事情,但它也崩潰:
廠:
include ....etc....
FactoryCircuiti::FactoryCircuiti(){
vector< vector<Elemento*> > circuito(1);
}
FactoryCircuiti::~FactoryCircuiti(){
}
void FactoryCircuiti::CreaResistenza(double a) {circuito[0].push_back(new Resistenza(a));}
//這最後一行是有罪的!它會導致程序崩潰時在主要我使用這個成員函數!
相反,如果我把在構造」
circuito[0].push_back(new Induttanza());
circuito[1].push_back(new Resistenza());
circuito[0][0]=(new Conduttanza());
circuito[0][0]->print();"
這是確定的,當我創建類... 我的理解有很多嘗試的問題出在哪裏,但現在我不知道什麼做:( 感謝您的答覆
您可以顯示更多的類factoryCircuiti的?乍一看,它看起來像你的建設者不是初始化成員,而是用局部變量隱藏它。 (請嘗試更改您的構造函數'FactoryCircuiti :: FactoryCircuiti():ciruito(1){}' – IdeaHat
該類得到了其他兩個變量可以用兩個成員函數進行修改。但問題不在這裏,因爲當我建立工廠時,我遵循以下路徑:1)工廠和兩個變量和構造函數和析構函數。沒關係2)構建成員函數。沒關係3)構建向量和「Crea Resistenza」等等......沒關係......但是當我使用主要...時:P感謝您的幫助! – Keys88