У меня есть классы Deck, абстрактный класс Card и Spell and Minion, которые оба являются производными от Class.У меня есть vector<unique_ptr<Card> >
всех существующих карт, и теперь я хочу поместить их в колоды.Я хочу использовать void Deck::addCard(<unique_ptr<Card>)
перегрузки для Minion и Spell.
Я пытался изменить аргументы и параметры на «тупой» * указатель или просто на карточку (которая не работает, я знаю), ссылки, не-ссылки и т. Д. *
Вызов addCard
Deck tmp;
for( const auto & it : mAllCards )
{
cout << typeid( *it ).name() << endl;
tmp.addCard( it );
}
функций addCard
void Deck::addCard( const unique_ptr<Card> & card )
{
cout << "basic" << endl;
}
void Deck::addCard( const unique_ptr<Minion> & minion )
{
cout << "minion" << endl;
}
void Deck::addCard( const unique_ptr<Spell> & spell )
{
cout << "spell" << endl;
}
Проблема в том, что версия Card вызывается каждый раз, а не варианты для производных типов.Во всем typeid говорит Миньон или Заклинание, а не Карта.