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_aconnection_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 に答える