c ++基类到达子类变量

时间:2013-06-25 16:40:50

标签: c++ inheritance

我有一个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没有私有。

1 个答案:

答案 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(),您可以自由阅读父级的所有非私有字段。从基类开始,不允许直接访问任何派生类的变量。但是,您可以调用基类提供的虚拟方法,这些方法在已知类中被覆盖,因为知道将被调用的方法取决于实例的类类型。