push_back с использованием сырых указателей и умных указателей - PullRequest
0 голосов
/ 02 мая 2020

У меня возникают проблемы с пониманием того, как создавать новые объекты класса и помещать его sh в вектор с помощью интеллектуальных указателей.

с использованием необработанных указателей это будет выглядеть примерно так:

std::vector <Deck*> creat_cards; // vector with the objects
std::vector <Deck*> final_cards; //vector that will be copied into.

for (unsigned i=0; i <creat_cards.size(); i++) {

          final_cards.push_back(new Card(creat_cards[i]->getMonster(),creat_cards[i]->getCost(),creat_cards[i]->getType()));
      }

// это работает

однако при попытке сделать это я получаю сообщение об ошибке:

std::vector <Deck*> creat_cards; // vector with the objects

std::vector<std::shared_ptr<Card*>> final_cards //vector that will be copied into.

for (unsigned i=0; i <creat_cards.size(); i++) {

          final_cards.push_back(new Card(creat_cards[i]->getMonster(),creat_cards[i]->getCost(),creat_cards[i]->getType()));
      }

Работает ли push_back с умными указателями?

...