Inherit Shell Class для использования в контейнерах - PullRequest
1 голос
/ 23 мая 2011

Будет ли хорошей практикой иметь группу связанных классов, все они наследуют один и тот же (по существу пустой) класс, чтобы клиент мог организовать все экземпляры в один контейнер?

Например:

class One : public Foo { }
class Two : public Foo { }
class Three : public Foo { }

Так что позже я могу сделать std::vector<Foo*> myClasse с.

Если нет, то что считается хорошей практикой?

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Это стандартная практика для реализации полиморфных типов.Однако для базового класса необычно быть пустым.Помимо всего прочего, он ДОЛЖЕН реализовывать виртуальный деструктор, и обычно существуют другие (возможно, чистые) виртуальные функции, которые должны быть предоставлены для того, чтобы сделать что-нибудь полезное.

1 голос
/ 23 мая 2011

Пока вы добавляете виртуальный деструктор в Foo, чтобы вы могли dynamic_cast позже, у вас все будет хорошо.

...