История изменений
Исправление KennyMinigun, (текущая версия) :
Какая здесь ошибка?
Ошибка вот здесь:
pa xa = new pa ();
Должно быть хотя бы так:
pa* xa = new pa ();
А вообще в случае использования виртуальных функций обычно пранируется использовать их через «интерфейс» — базовый класс.
https://wandbox.org/permlink/vr5k1u5XycyXPxR1
struct Base {
virtual const char * whoami() const = 0;
};
struct Foo : Base {
const char * whoami() const override { return "I am Foo"; }
};
struct Bar : Base {
const char * whoami() const override { return "I am Bar"; }
};
int main() {
std::array<Base*, 2> objects = { new Foo, new Bar };
for (Base* object : objects) {
std::cout << object->whoami() << '\n';
}
}
// Выводит
// I am Foo
// I am Bar
Исходная версия KennyMinigun, :
Какая здесь ошибка?
Ошибка вот здесь:
pa xa = new pa ();
Должно быть хотя бы так:
pa* xa = new pa ();
А вообще в случае использования виртуальных функций обычно пранируется использовать их через «интерфейс» — базовый класс.
https://wandbox.org/permlink/vr5k1u5XycyXPxR1
struct Base {
virtual const char * whoami() const = 0;
};
struct Foo : Base {
const char * whoami() const override { return "I am Foo"; }
};
struct Bar : Base {
const char * whoami() const override { return "I am Bar"; }
};
int main() {
std::array<Base*, 2> objects = { new Foo, new Bar };
for (Base* object : objects) {
std::cout << object->whoami() << '\n';
}
}