C++ 错误 2084:"already has body"

C++ Error 2084: "already has body"

本文关键字:already body has 错误 2084 C++      更新时间:2023-10-16

我不太清楚为什么会出现这个错误。也许我只是失明,或者错误可能来自其他来源。这是我得到的错误(我是德语的sry-its)
Fehler 1错误C2084:Funktion"void Enemy::loseHp(int)"hat bereits einen Funktionsrumpf h:\oop\oop\Enemy.cpp 73

这是我的头文件:

   #ifndef ENEMY_H
    #define ENEMY_H
    class Enemy
    {
    private:
        int atk;                        // Angriffsattribut
        int def;                        // Verteidigungsattribut
        int hp;                         // Lebensattribut
    public:
        Enemy(void);                    // Konstruktor
        Enemy(int, int, int);// Konstruktor mit eigenen Werten
        ~Enemy(void);                   // Destruktor
        // get/set Methoden
        int getAtk();                   // Liefert Angriffwert zurück
        void setAtk(int);           // Legt einen Angriffswert fest
        int getDef();                   // Liefert Verteidigungswert zurück
        void setDef(int);           // Legt einen Verteidigungswert fest
        int getHp();                    // Liefert Lebenswert zurück
        void setHp(int);            // Legt einen Lebenswert fest
        //------------------------------------------------------
        void init(int, int, int);
        void Attack(Enemy*);        // Methode, welche einen Angriff simuliert
        void loseHp(int);           // Methode, welche das Verlieren von Leben simuliert
    };
    #endif

这是.cpp文件

#include "Enemy.h"
#include <iostream>

Enemy::Enemy(void) : atk(0), def(0), hp(0)
{
    std::cout << typeid(this).name() << " wurde instanziert.n";
}
Enemy::Enemy(int atk, int def, int hp)
{
    this->atk = atk;
    this->def = def;
    this->hp = hp;
    std::cout << typeid(this).name() << " wurde instanziert.n";
}
Enemy::~Enemy(void)
{
}
#pragma region Getter&Setter
int Enemy::getAtk()
{
    return this->atk;
}
void Enemy::setAtk(int value)
{
    this->atk = value;
}
void Enemy::loseHp(int value)
{
    this->setHp(this->getHp() - value);
}
int Enemy::getDef()
{
    return this->def;
}
void Enemy::setDef(int value)
{
    this->def = value;
}
int Enemy::getHp()
{
    return this->hp;
}
void Enemy::setHp(int value)
{
    this->hp = value;
}
#pragma endregion
void Enemy::loseHp(int value)
{
    int currHp;
    currHp = this->getHp();
    currHp -= value;
    this->setHp(value);
    std::cout << typeid(this).name() << " hat " << value << "Leben verloren!n";
}
void Enemy::Attack(Enemy* enemy)
{
    int tmpAtk = this->getAtk();
    int enemyDefense = enemy->getDef();
    int totalAtk = tmpAtk - enemyDefense;
    if(totalAtk > 0) {
        std::cout << typeid(this).name() << " hat " << typeid(enemy).name() << " angegriffen und " << totalAtk << " Schaden hinzugefügt!n";
        enemy->loseHp(totalAtk);
    }
    else if (totalAtk <= 0){return;}
}

void Enemy::init(int atk, int def, int hp)
{
    this->setAtk(atk);
    this->setDef(def);
    this->setHp(hp);
}

最后是我的主要功能

    #include <iostream>
#include "Enemy.h"
using namespace std;
int main(){
    Enemy Drache;
    Enemy Greif; 
    Drache.init(100,25,200);
    Greif.init(250,10,100);
    Greif.Attack(&Drache);

    cin.get();
    return 0;
}

在.cpp文件中,Enemy::loseHp(int)以两种不同的方式定义:

void Enemy::loseHp(int value)
{
    this->setHp(this->getHp() - value);
}
...
void Enemy::loseHp(int value)
{
    int currHp;
    currHp = this->getHp();
    currHp -= value;
    this->setHp(value);
    std::cout << typeid(this).name() << " hat " << value << "Leben verloren!n";
}

只提供一个定义。