私は最近 Java から C++ に移行しましたが、クラスの継承が正確にどのように機能するかを理解するのに苦労しています。現在、私はクラスWeapon
とクラスを持っていMinigun
ます。Minigun
class を継承します。つまり、定義Weapon
するメソッドと変数が必要です。Weapon
私の問題は、内部にプライベート定数 static int があり、 とWeapon
呼ばrate
れる整数を返すパブリック メソッドがあることgetRate()
です。getRate()
クラスで定義されているレート変数を返すだけです。Minigun
extendsWeapon
でレートを内部に設定すると、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
Minigun.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;
}