Поэтому предположим, у меня есть:Вызов член высшего класса уровня C++
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()?
}
Я не уверен, если это имеет смысл
[EDIT] Ok, так что это своего рода работу. Хотя он по-прежнему перенаправляется на базовый метод, что меня смущает.
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 относится к А-уровне структуры класса, а затем вызывает тот уровень DoSomething(). Я изменил методы A на виртуальные, так есть ли способ явно определить уровень выполнения или?
Добавлено мой выбор так же, как вы отправили это. Я верю, что вы сделали именно то, что мне нужно. благодаря – Fuller 2010-11-27 20:03:20