2016-09-29 283 views
-3

我是新来的对象编程和c + +。C++类继承,标识符未定义

我正在应用SoloLearn C++课程中有关类继承的教学内容。

阶级敌人:enemy.h

class enemy 
{ 
public: 
    enemy(); 
    ~enemy(); 
    void setAttackPower(); 
protected: 
    int aP; 
}; 

enemy.cpp

#include "enemy.h" 
#include <iostream> 
using namespace std; 

enemy::enemy() 
    { 
     cout << "constructor" << endl; 
    } 
enemy::~enemy() 
    { 
     cout << "destructor" << endl; 
    } 

int aP=0; 
void setAttackPower(int a) { 
     aP = a; 
    } 

类忍者,从敌人继承: ninja.h

#include "enemy.h" 

class ninja: public enemy 
{ 
public: 
    ninja(); 
    ~ninja(); 
    void attack(); 
}; 

ninja.cpp

#include "ninja.h" 
#include <iostream> 
using namespace std; 

ninja::ninja() 
{ 
} 

ninja::~ninja() 
{ 
} 

void attack() { 
    cout << "Ninja attack " << aP << endl; 
} 

和错误是:

标识符 “AP” 是未定义的。我看不到问题。谁能帮我?

+2

在'attack'之前''setAttackPower'和'ninja ::'之前已经忘了'enemy ::'。 –

+0

'void attack()'不是'ninja'的成员。 –

+0

@Pete Becker'void attack()'是一个在忍者头文件中声明的公共方法。 @Alexey Guseynov如果我在'attack'之前把'enemy ::'放在'setAttackPower'和'ninja ::'之前,Visual Studio会向我发出错误信号。 – simmy

回答

0

enemy.cpp int aP = 0; 您创建了2个具有相同名称的值:第1个属于类,第2个是全局值。编译器无法确定您正在尝试使用哪一个。