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