我是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