0

我有一个 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而不是私有的。

4

1 回答 1

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

于 2013-06-25T16:47:01.237 回答