Push_back() 函数不适用于包含 class 对象的向量
Push_back() function does not work with vectors containing class objects
我这里有一小段代码 class Combat。这个class的构造函数以vector reference为参数,初始化private "MTeam" vector成员。这个 class 有一个函数 combat() ,它通过引用接受 class Monster 对象的向量。我希望此函数将 MTeam 向量中的元素数量增加 4。我想使用 push_back() 函数,但它不起作用并给我一个错误:no instance of overloaded函数匹配参数列表参数类型为:(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;
}
您正试图将整数 4 推回到您的向量中。 push_back() 接受向量元素作为参数。
使用 MTeam.resize(MTeam.size()+4);
代替
我这里有一小段代码 class Combat。这个class的构造函数以vector reference为参数,初始化private "MTeam" vector成员。这个 class 有一个函数 combat() ,它通过引用接受 class Monster 对象的向量。我希望此函数将 MTeam 向量中的元素数量增加 4。我想使用 push_back() 函数,但它不起作用并给我一个错误:no instance of overloaded函数匹配参数列表参数类型为:(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;
}
您正试图将整数 4 推回到您的向量中。 push_back() 接受向量元素作为参数。
使用 MTeam.resize(MTeam.size()+4);
代替