我有一个c ++问题,我需要将派生类的函数移动到基类来“清理”我的代码。这是我要移动的代码:
double Resistor::getVolt()
{
if (connection_a->getCharge() > connection_b->getCharge())
return connection_a->getCharge() - connection_b->getCharge();
else
return connection_b->getCharge() - connection_a->getCharge();
}
double Resistor::getCurr()
{
if (connection_a->getCharge() > connection_b->getCharge())
return (connection_a->getCharge() - connection_b->getCharge())/resistance;
else
return (connection_b->getCharge() - connection_a->getCharge())/resistance;
}
我需要移动所有这些并仍然到达变量connection_a
& connection_b
没有私有。
答案 0 :(得分:2)
class Component{
protected:
Component *connection_a, *connection_b;
virtual double getCharge();
public:
virtual ~Component();
};
class Resistor : public Component{
public:
virtual double getVolt();
virtual double getCurr();
virtual ~Resistor();
};
从getVolt(),您可以自由阅读父级的所有非私有字段。从基类开始,不允许直接访问任何派生类的变量。但是,您可以调用基类提供的虚拟方法,这些方法在已知类中被覆盖,因为知道将被调用的方法取决于实例的类类型。