나는 이런 식으로 뭔가를 시도 : 그래서, 수업 자료 상속 객체 A를 보유하고 C++ 기본 클래스의 상속되고 재정의 된 속성 값에 액세스하는 방법은 무엇입니까?
class A{
public:
A(){number = 1;}
int number;
};
class B : public A{
public:
B(){number = 2;}
};
class Base {
public:
Base() {myAttribute = new A();}
int returnAttrNumber(){return myAttribute->number;}
A *myAttribute;
};
class Inherited : public Base{
public:
Inherited(){myAttribute = new B();}
B *myAttribute;
};
int main()
{
Inherited *i = new Inherited();
std::cout << i->returnAttrNumber(); // outputs 1, because it gets the A not the B. I want it to output 2, to get the B object in returnAttrNumber()
}
는 A-파생 된 개체 B를 보유하고 그리고 기본 클래스의 메소드를 호출하려고하지만 이 (static_cast없이 또는 dynamic_cast는
) 가능한 한 멀리 해당 개체의 hirarchy에서 아래로 캐스팅 한 후 B 객체가 아니라 먹고 싶어하고 물건을 할 인가 (이이 경우에 수의 반환) 큰 어려움없이 C++의 기본 클래스에서 다운 캐스팅을 수행 할 수있는 방법이 있습니까? 답변 해 주셔서 감사합니다.
실제 코드를 게시하십시오. 세부 사항이 중요합니다. – juanchopanza
"이 값은 Base에서가 아니라 Inherited에 저장된 값을 변경해야합니다."값을 변경할 수있는 멤버는 하나뿐입니다. 판타지 코드를 사용하지 마십시오. 이 문법 오류가 너무 많아서 실제 질문에서 벗어날 수 있습니다. – user463035818
예, 죄송합니다. 현재 고쳐졌습니다. – mep