如何使用 setter 作为对象的向量
how to use a setter for vector of an object
std::vector<Game*> games;
我有以下 setter:
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;
的情况下解决此问题
i.setGames(&gameSet);
需要 setGames
获取指向 std::vector<Game>
的指针。这意味着以下函数签名
void Instructor::setGames(std::vector<Game> *value);
你拥有的是简单的 const ref std::vector<Game*>
void Instructor::setGames(const std::vector<Game*> &value);
很明显它们是不同的类型,你有错误。
你只需要const std::vector<Game>& value
void Instructor::setGames(const std::vector<Game>& value)
{
games = value; // also change the type of games to be std::vector<Game>
}
主要
Game g1, g2, g3;
std::vector <Game> gameSet{ g1, g2, g3};
i.setGames(gameSet);
鉴于您有一个 Game
指针向量,这是它将接受的对象类型,因此 g1
、g2
和 g3
必须是指针:
Game *g1, *g2, *g3;
std::vector <Game*> gameSet;
g1 = new Game(); //intialize pointers
g2 = new Game();
g3 = new Game();
//...
i.setGames(gameSet);
请注意,现在使用原始指针并不是一个好的做法,最好使用智能指针,研究一下。
What is a smart pointer and when should I use one?
std::vector<Game*> games;
我有以下 setter:
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;
i.setGames(&gameSet);
需要 setGames
获取指向 std::vector<Game>
的指针。这意味着以下函数签名
void Instructor::setGames(std::vector<Game> *value);
你拥有的是简单的 const ref std::vector<Game*>
void Instructor::setGames(const std::vector<Game*> &value);
很明显它们是不同的类型,你有错误。
你只需要const std::vector<Game>& value
void Instructor::setGames(const std::vector<Game>& value)
{
games = value; // also change the type of games to be std::vector<Game>
}
主要
Game g1, g2, g3;
std::vector <Game> gameSet{ g1, g2, g3};
i.setGames(gameSet);
鉴于您有一个 Game
指针向量,这是它将接受的对象类型,因此 g1
、g2
和 g3
必须是指针:
Game *g1, *g2, *g3;
std::vector <Game*> gameSet;
g1 = new Game(); //intialize pointers
g2 = new Game();
g3 = new Game();
//...
i.setGames(gameSet);
请注意,现在使用原始指针并不是一个好的做法,最好使用智能指针,研究一下。
What is a smart pointer and when should I use one?