Функция Push_back () не работает с векторами, содержащими объекты класса - PullRequest
0 голосов
/ 03 мая 2020

У меня есть небольшой фрагмент кода с классом Combat. Конструктор этого класса принимает в качестве параметра ссылку на вектор и инициализирует закрытый член вектора «MTeam». Этот класс имеет функцию battle (), которая принимает вектор объектов класса 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;
}

1 Ответ

0 голосов
/ 03 мая 2020

Вы пытаетесь вернуть sh целое число 4 в ваш вектор. push_back () принимает элемент вектора в качестве параметра. Используйте MTeam.resize(MTeam.size()+4); вместо

...