class Base;
class A : Base
{
void virtual Do(){}
}
class B : A
class C : A
class D : A
...
{
void virtual Do(){}
}
list<Base *> bases;
bases.push_back(new B);
bases.push_back(new C);
bases.push_back(new D);
for(auto i : bases)
{
dynamic_cast<A *>(i)->Do(); // вызовется метод класса A а нужно В, C, D
}
не хочется пихать метод Do в Base ибо ему там не место
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, Kingofastellarwar, Вы писали:
K>как?
Этот пример не должен ни компилироваться ни работать, т.к.
1. Наследование закрытое
2. Динамическое приведение выполняется от класса, не имеющего виртуальных методов
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, Kingofastellarwar, Вы писали:
K>>как?
AD>Этот пример не должен ни компилироваться ни работать, т.к. AD>1. Наследование закрытое AD>2. Динамическое приведение выполняется от класса, не имеющего виртуальных методов
AD>Приведи полный компилируемый пример.
ну он там чуть сложнее, но я разрулил уже, оказалось тупо сигнатуры немного отличались, в одном передавалось по значению а в перегруженном по ссылке, в итоге все компилируется а перегрузки не выполняется
пасиба посоны
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, Kingofastellarwar, Вы писали:
K>ну он там чуть сложнее, но я разрулил уже, оказалось тупо сигнатуры немного отличались, в одном передавалось по значению а в перегруженном по ссылке, в итоге все компилируется а перегрузки не выполняется
Чтобы такого не случалось, придумали ключевое слово override
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, Kingofastellarwar, Вы писали:
K>>ну он там чуть сложнее, но я разрулил уже, оказалось тупо сигнатуры немного отличались, в одном передавалось по значению а в перегруженном по ссылке, в итоге все компилируется а перегрузки не выполняется
AD>Чтобы такого не случалось, придумали ключевое слово override