我最近从 Java 过渡到了 C++,但在弄清楚类继承如何准确工作时遇到了一些困难。目前,我有 classWeapon
和 class Minigun
。Minigun
继承类Weapon
,这意味着它应该具有Weapon
定义的方法和变量。我的问题是我在内部有一个私有常量 static int和一个返回整数的公共方法,Weapon
称为. 只需返回类中定义的速率变量。当extends并且我在里面设置 rate时,该方法仍然从类中返回常量,即使它是在rate
getRate()
getRate()
Minigun
Weapon
Minigun
getRate()
Weapon
Minigun
班级。我以为它会像 Java 一样,继承的方法会在Minigun
. 目前我必须做以下事情;
武器.h
#ifndef __WEAPON__
#define __WEAPON__
class Weapon
{
public:
virtual int getRate()
{
return rate;
}
private:
const static int rate = 0;
};
#endif
迷你枪.h
#include "Weapon.h"
#ifndef __WEAPON_MINIGUN__
#define __WEAPON_MINIGUN__
class Minigun: public Weapon
{
public:
int getRate(); // I have to define this here, and create it inside Minigun.cpp
private:
const static int rate = 30;
};
#endif
迷你枪.cpp
#include "Minigun.h"
int Minigun::getRate() // Is there a way so I do not need to type this out for every class that extends Weapon?
{
return rate;
}