У меня есть класс C++, унаследованный от класса A. Возможно, я пропустил важную концепцию ООП, и это, безусловно, довольно тривиально, но я не понимаю, как я могу, после конкретизацией B, использовать конструктор A внутри B переназначить новые значения только к локальным переменным, унаследованных от A:Использование конструктора родительского класса для переназначения значения для унаследованных переменных
Класс A
class A{
public:
A(int a, int b){
m_foo = a;
m_bar = b;
}
protected:
int m_foo;
int m_bar;
};
класса B
class B : public A{
public:
B(int a, int b, int c):A(a,b),m_loc(c){};
void resetParent(){
/* Can I use the constructor of A to change m_foo and
* m_bar without explicitly reassigning value? */
A(10,30); // Obviously, this does not work :)
std::cout<<m_foo<<"; "<<m_bar<<std::endl;
}
private:
int m_loc;
};
Главной
int main(){
B b(0,1,3);
b.resetParent();
return 1;
}
В этом конкретном примере, я хотел бы назвать b.resetParent()
, который должен вызвать A::A()
изменить значение m_foo
и m_bar
(в b
) до 10 и 30, соответственно, , Поэтому я должен напечатать «10; 30», а не «0; 1».
Большое спасибо за вашу помощь,
Благодарим за быстрый ответ. Это имеет смысл:). –