【发布时间】:2016-09-29 20:52:52
【问题描述】:
我是对象编程和 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”未定义。我看不出问题。谁能帮帮我?
【问题讨论】:
-
你在
setAttackPower之前忘记了enemy::,在attack之前忘记了ninja::。 -
void attack()不是ninja的成员。 -
@Pete Becker
void attack()是 ninja 头文件中声明的公共方法。 @Alexey Guseynov 如果我将enemy::放在setAttackPower之前,将ninja::放在attack之前,Visual Studio 会向我发出错误信号。 -
@simmy - 类
ninja有一个名为attack的公共成员函数的声明,但在名为“source”的sn-p 末尾的void attack()不是那个成员功能。将其更改为void ninja::attack()。 -
@Pete Becker 谢谢你,它现在可以工作了。但是为什么我不需要与文件 enemy.cpp 中的
void setAttackPower(int a) {相同(我编辑了文件的名称以使其更清晰)?
标签: c++ inheritance