提问人:Huseyn Salahov 提问时间:5/4/2020 更新时间:5/4/2020 访问量:143
Push_back() 函数不适用于包含类对象的向量
Push_back() function does not work with vectors containing class objects
问:
我这里有一小段关于战斗类的代码。此类的构造函数将向量引用作为参数,并初始化私有的“MTeam”向量成员。这个类有一个函数 combat(),它通过引用接受 Monster 类对象的向量。我希望这个函数将 MTeam 向量中的元素数增加 4。我想使用 push_back() 函数,但它不起作用并给我一个错误:没有重载函数的实例与参数列表参数类型匹配:(int) 对象类型为:std::vector>
这里有什么问题?
class Monster{
int health;
int protection;
public:
void attack(){
}
void heal(){
}
};
class Combat {
vector<Monster>& MTeam;
public:
Combat(vector<Monster>& MonsterTeam):MTeam(MonsterTeam) {
}
void IncreaseMembers() {
MTeam.push_back(4);//here the programme gives an error
}
};
int main()
{
vector<Monster> MonsterTeam;
Combat C;
C.combat(MonsterTeam);
return 0;
}
答:
0赞
AlexM4
5/4/2020
#1
您正在尝试将整数 4 推回向量中。push_back() 接受 vector 的元素作为参数。
请改用MTeam.resize(MTeam.size()+4);
评论
0赞
Huseyn Salahov
5/6/2020
多谢。我还没有学到太多关于向量的知识,所以有时我会混淆一些函数
评论