我遇到的问题是我试图从两个具有相同名称ObjectArray的父类访问成员数据。 ObjectArray是Subcircuit类或组件类的向量。我本质上想要对它们执行两次“getImpedence”相同的功能。
virtual complex<double> getImpedence(){
for (unsigned int i = 0; i < ObjectArray.size(); i++){
ObjectImpedence += ObjectArray[i].getImpedence();
}
return ObjectImpedence;
};
这是基类SetOfElectricalComponents中的递归函数,它在层次结构中向下移动,这样一旦ObjectArray [i]成为组件,它就会返回复数double。
没有多重继承删除构造函数的工作解决方案是覆盖“getImpedence”函数
class MainCircuit :public SetOfElectricalComponents<SubCircuit> {
protected:
vector<Component> ExtraComponentsArray;
public:
// function that returns Impedence for MainCircuit
complex<double> getImpedence(){
for (unsigned int i = 0; i < ObjectArray.size(); i++){
ObjectImpedence += ObjectArray[i].getImpedence();
}
for (unsigned int i = 0; i < ExtraComponentsArray.size(); i++){
ObjectImpedence += ExtraComponentsArray[i].getImpedence();
}
return ObjectImpedence;
}
void addExtra(Component item){ cout << "here" << endl; ExtraComponentsArray.push_back(item); };
};
但是使用类似
的多重继承class MainCircuit :public SetOfElectricalComponents<SubCircuit>,SetOfElectricalComponents<Component> {
protected:
vector<Component> ExtraComponentsArray;
public:
// function that returns Impedence for MainCircuit
complex<double> getImpedence(){} // Do this for Both Object Arrays?
void addExtra(Component item){ cout << "here" << endl; ExtraComponentsArray.push_back(item); };
};
我不确定如何继续。