我需要帮助C LNK2005和LNK1169中的类代码分开

  • 本文关键字:代码 LNK1169 帮助 LNK2005 c++
  • 更新时间 :
  • 英文 :


我是C 的新手,我必须创建一个简单的视频游戏,该游戏具有一个敌人的类别,当我尝试将敌方代码与Main.cpp分开时,问题就来了创建敌人。h和敌人。

敌人.cpp文件

#include "enemy.h"
enemy::enemy(int _hp, int _attackValue, string _name) {
    hp = _hp;
    attackValue = _attackValue;
    name = _name;
}
void enemy::attack(enemy agressor, enemy objective) {
    objective.set_hp(objective.hp - agressor.attackValue);
    objective.showinfo(objective, 2);
}
void enemy::showinfo(enemy enemy, int hero) {
    if (hero == 1) {
        cout << "     nnnnnnn";
        cout << enemy.name;
        cout << "     nnnnnnnn";
        for (int i = enemy.hp / 5; i > 0; i--) {
            cout << "|";
        }
        cout << "     nnnnnnnnn";
        cout << enemy.hp;
    }
    else {
        cout << "                                   nnnnnnn";
        cout << enemy.name;
        cout << "                                   nnnnnnnn";
        for (int i = enemy.hp / 5; i > 0; i--) {
            cout << "|";
        }
        cout << "                                   nnnnnnnnn";
        cout << enemy.hp;
    }
}
int enemy::get_hp() {
    return hp;
}
void enemy::set_hp(int _hp) {
    hp = _hp;
}
int enemy::get_attackValue() {
    return attackValue;
}
string enemy::get_name() {
    return name;
}

敌人.h文件

#pragma once
#ifndef enemy_H
#define enemy_H
class enemy {
private:
    int hp, attackValue;
    string name;
public:
    enemy();
    enemy(int, int, string);
    void attack(enemy, enemy);
    void showinfo(enemy, int);
    int get_hp();
    void set_hp(int hp);
    int get_attackValue();
    string get_name();
};
#endif // !enemy_H

pd:我仍然不知道如何在C 中实现setCursorPosition。

您已经声明了enemy(),但尚未定义它。如果您声明默认构造函数,请确保定义它(可能在.cpp文件中(

您遇到的错误意味着您违反了ODR(一个定义规则(。换句话说,当您尝试将enemy类与主体分开时,您并没有将所有零件从那里远程偏离,最终在多个CPP文件中获得了相同的代码。

作为旁注,看起来您忘了定义敌人::敌人((构造函数,或者忘记将其从main.cpp移至敌人。cpp?

最新更新