Push_back()函数不适用于包含类对象的向量

问题描述 投票:0回答:1

我这里有一些Combat类的代码。此类的构造函数将矢量引用作为参数,并初始化私有“ MTeam”矢量成员。这个类有一个函数warat(),该函数通过引用接受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;
}

class vector parameter-passing pass-by-reference
1个回答
0
投票

您正在尝试将整数4推回向量中。 push_back()接受vector的元素作为参数。使用MTeam.resize(MTeam.size()+4);代替

© www.soinside.com 2019 - 2024. All rights reserved.