Я пытаюсь создать подкласс класса со специализацией того, как я хочу, чтобы конкретная функция выполнялась. Однако C ++ неявно преобразует мой класс в его базовый класс, когда я сохраняю его в списке. Очевидно, что в списке может храниться любой подкласс класса, так что это приемлемо, но как мне сохранить класс, чтобы получить доступ к этой конкретной функции.
Единственный способ сделать это - использовать шаблоны, есть ли другие варианты?
Вот пример:
class A
{
A() {}
virtual void function()
{
}
}
class B : public A
{
B() {}
void function()
{
}
}
boost::shared_ptr<B> b = boost::shared_ptr<B>(new b);
std::list<boost::shared_ptr<A> > objects;
objects.push_back(b);
// pull t out of objects
t.function();
Редактировать: Это слишком упрощено, поэтому я исправил несколько вещей ...