c ++多重继承歧义,继承两个包含成员数据

时间:2017-04-23 09:48:03

标签: c++ multiple-inheritance

我遇到的问题是我试图从两个具有相同名称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); };
}; 

我不确定如何继续。

0 个答案:

没有答案