我是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(){
};
};
不知道如果这是你的问题,但你违反了一个定义规则。您应该将整个类的声明放在标题中,并且只将这些实现放在源文件中。 – 2014-09-29 00:45:08
我明白这个问题。首先,编译器不是complite Character.cpp和Mage.cpp。 – 2014-09-29 02:38:22
之后,我只需要调整文件Mage.cpp,Character.cpp来导入文件Mage.h和Character.h。 – 2014-09-29 02:39:10