Итак, предположим, у меня есть:
Class A
{
void A::DoSomething();
A::A()
};
Class B : public A
{
void B::DoSomething();
B::B()
}
Class C : public A
{
void C::DoSomething();
C::C()
}
B obj1;
C obj2;
void RemoveObjectFromListOrSomethingSimiliar(A objToLookFor)
{
//assuming you found the object, how would you call the top-level DoSomething() (for example B::DoSomething() ) instead of the A::DoSomething()?
}
Я не уверен, имеет ли это смысл
[ПРАВИТЬ] Хорошо, так что это вроде работает.Хотя он все еще перенаправляет на базовый метод, что меня смущает.
B obj1;
c obj2;
AList.push_back(obj1);
AList.push_back(obj2);
//later, in another method:
A objInBack = AList.back();
objInBack.DoSomething();
AList.pop_back();
objInBack ссылается на A-уровень структуры класса и впоследствии вызывает этот уровень DoSomething ().Я изменил методы A на виртуальные, так есть ли способ явно определить уровень выполнения или?