我是C ++的新手,我不明白标题,类,对象和继承是如何工作的。
所以我的代码存在问题。我不能将我的方法称为攻击来自Mage类继承自Character类。
当我尝试测试时发生此错误:
CMakeFiles\GUi.dir/objects.a(main.cpp.obj): In function `main':
C:/Users/Guilherme/Dropbox/Develop/c++/t/main.cpp:8: undefined reference to `Mage::attack()'
我真的不知道问题出在哪里。如果有人可以帮助我,我会很高兴。
此main.cpp
#include <iostream>
#include <conio.h>
#include <string.h>
#include "chars/Mage.h"
int main() {
Mage myChar;
myChar.attack();
return 0;
}
Mage.h
class Mage{
public:
void attack();
};
Mage.cpp
#include "Character.h"
class Mage : public Character{
public:
double maxHP = 20;
void attack(){
}
};
Character.h
#define MINIMUM_POINTS 1
#define STATUS_CHARACTER_DEAD false
#define STATUS_CHARACTER_LIVED true
#include <string.h>
class Character{
public:
Character();
int level; //current level
double maxHP; //Max Life
double maxMP; //Max points to use mana
double attackPhysical; //Power physical attack
double attackMagic; // Points to magic attack
double defensePoints; // Point to physical attack defense
// string name; //Char name
bool live; // if person is live or dead
void setName(); //Setter Char name
void getName(); //Getter char name
void attack();
};
** Character.cpp *
class Character{
public:
void attack(){
};
};
答案 0 :(得分:1)
你必须只有一个'班级法师'的定义。你有两个,他们互相矛盾。一个在Mage.h中,另一个在Mage.cpp中。你应该只用这种方式在Mage.cpp中实现Mage :: attack:
void Mage::attack(){
}
此外,您还需要先了解头文件在C / C ++中的工作原理。
答案 1 :(得分:1)
在Mage.cpp中:
void Mage::attack(){
}
也在Character.cpp中:
void Character::attack(){
};