C ++ - typeid (), используемый в производном классе, не возвращает правильный тип

Может быть, я неправильно понимаю, как здесь работает наследование, но вот моя проблема:

У меня есть класс Option и класс RoomOption, который происходит от него. У меня есть еще одна классная комната, которая содержит вектор shared_ptrs. В основном я добавляю RoomOption к этому вектору. Затем, используя typeid (), я проверяю тип, и он говорит мне, что это Option. Из того, что я прочитал, typeid должен возвращать производные типы, а shared_ptrs не вызывает нарезку, поэтому я не уверен, что я делаю неправильно.

Вот код:

Room.h:

vector<shared_ptr<Option> > options;
void addOption(shared_ptr<Option>);
shared_ptr<Option> getOption(int);

Room.cpp:

void Room::addOption(shared_ptr<Option> option){
    options.push_back(option);
}

shared_ptr<Option> Room::getOption(int i){
    return options[i];
}

главный:

shared_ptr<Room> outside(new Room(0, "", ""));
outside->addOption(shared_ptr<RoomOption>(new RoomOption(0, "Go inside", hallway)));
cout<<typeid(player->getRoom()->getOption(0)).name().get()<<endl; 
//This line prints "class std::tr1::shared_ptr<class Option>

Мне приходит в голову, что, возможно, при добавлении или получении Option, RoomOption приводится в качестве Option из-за типа возврата / аргумента. Если это так, то как мне хранить вектор более одного типа? Или я все неправильно понимаю? знак равно

Ответы на вопрос(3)

Ваш ответ на вопрос