来自类的对象的调用方法继承自另一个类

时间:2014-09-29 00:42:26

标签: c++

我是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(){

    };
};

2 个答案:

答案 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(){

};