2013-06-25 2 views
0

У меня проблема C++, где мне нужно переместить функции производного класса в базовый класс, чтобы «очистить» мой код. Это код, который я хочу, чтобы переместить: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 без приватного.

+2

В чем проблема – aaronman

+3

Хорошо. Чего же ты ждешь? – user93353

ответ

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() вы можете свободно читать все неличные поля родителя. Из базового класса вам не разрешается напрямую обращаться к любой из переменных производного класса. Однако вы могли бы называть виртуальные методы, предлагаемые базовым классом, которые перезаписываются в классе derrive, зная, что те, которые будут вызываться, зависят от типа класса экземпляра.