binary'==':找不到使用'Enemy'类型的左操作数(或没有可接受的转换)的运算符]]

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

我正在做一个游戏,我正在尝试用bool shouldDie == true寻找敌人。我有一个敌人std :: list,而且我个人不知道代码出了什么问题。如果敌人的shouldDie == true,那么我将播放动画。希望您能帮助我理解我为什么得到此错误。

而且我也没有重载的==运算符,我已经在线搜索了,不确定是否有必要...

bool foundEnemy(Enemy& enemy)
{
    return enemy.shouldDie == true;
}
void Enemy::PlayDeathAnimation(std::list<Enemy>& enemies)
{
    dead = true;

    auto it = std::find_if(enemies.begin(), enemies.end(), foundEnemy); // where I think the error is
    auto enemy = std::next(it, 0);

    if (animationClock.getElapsedTime().asSeconds() >= 0.05f)
    {
        enemy->icon.setTextureRect(animationFrames[animationCounter]);
        if (animationCounter >= 8)
        {
            enemies.remove(*enemy);
        }
        animationCounter++;
        animationClock.restart();

    }
}
class Enemy : public Entity
{
public:
    Enemy() {}
    Enemy(sf::Vector2f position, sf::Texture* texture,Player* target);
    ~Enemy();

    void Update(sf::RenderWindow* window, float tElapsedTime);
    void Draw(sf::RenderWindow* window);
    void Fire(float tElapsedTime);
    void CheckBullets();
    void CheckEnemyBullets();
    void CheckHealth();

    void SetPosition(float x, float y);

    bool shouldDie = false;

    void PlayDeathAnimation(std::list<Enemy>& enemies);



private:

    bool dead = false;

    sf::Texture* deathSpriteSheet;
    std::vector<sf::IntRect> animationFrames;

    std::vector<Bullet> bullets;
    sf::RectangleShape origin;
    sf::RectangleShape aim;
    Player* target;

    int animationCounter = 0;
    sf::Clock animationClock;

};

我正在做一个游戏,我正在尝试用bool shouldDie == true寻找敌人。我有一个敌人std :: list,而且我个人不知道代码出了什么问题。如果敌人应该死== true ...

c++ stl
1个回答
2
投票

错误实际上不在您认为的位置,而是以下几行。

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