首页 > 解决方案 > 如何为对象的向量使用setter

问题描述

std::vector<Game*> games;

我有以下二传手:

void Instructor::setGames(const std::vector<Game *> &value)
{
    games = value;
}

我正在尝试像这样使用它:

 Game g1, g2, g3;
std::vector <Game> gameSet;
    gameSet.push_back(g1);
    gameSet.push_back(g2);
    gameSet.push_back(g3);
    i.setGames(&gameSet);

但我不断收到此错误:

error: no matching function for call to ‘Instructor::setGames(std::vector<Game>*)’
     i.setGames(&gameSet);

这也不起作用。

 i.setGames(gameSet);

我究竟做错了什么?我想在不改变的情况下解决这个问题std::vector<Game*> games;

标签: c++ooppointersvectorstd

解决方案


鉴于您有一个Game指针向量,这就是它将接受的对象类型,因此g1g2并且g3必须是指针:

Game *g1, *g2, *g3;
std::vector <Game*> gameSet;

g1 = new Game(); //intialize pointers
g2 = new Game();
g3 = new Game();
//...
i.setGames(gameSet);

现场演示

请注意,这些天使用原始指针并不是一个真正的好习惯,最好使用智能指针,研究一下。

什么是智能指针,我应该什么时候使用它?


推荐阅读