C++ Méthode De Classe De L'Héritage

J'ai récemment fait la transition à partir de Java C++, et je vais avoir quelques difficultés à trouver comment l'héritage de classe fonctionne exactement. Actuellement, j'ai la classe Weapon et la classe Minigun. Minigun hérite de la classe Weapon, ce qui signifie qu'il doit avoir les méthodes et les variables qui Weapon définit. Mon problème est que j'ai un privé statique de la constante de type int à l'intérieur de Weapon appelé rate, et une méthode publique qui renvoie un entier appelé getRate(). getRate() retourne simplement le taux variable tel que défini dans la classe. Lorsque Minigun s'étend Weapon, et j'ai fixé le taux à l'intérieur de Minigun, le getRate() méthode renvoie toujours la constante de la Weapon classe, même si elle est appelée sur le Minigun classe. J'ai pensé qu'il serait agir comme Java, et le intherited méthode serait d'utiliser de la modification de la variable à l'intérieur de Minigun. Actuellement, j'ai de faire ce qui suit;

Arme.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

Minigun.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;
}
  • essayez return Minigun::rate; dans le minigun .rpc. Pas de gaurentee
  • Mon Minigun.cpp fonctionne très bien, je suis à la recherche d'enlever complètement la getRate() la fonction de Minigun.cpp, et d'utiliser celui déjà défini dans l'Arme
  • retirez le taux de la classe minigun et le getrate fonction. Lorsque vous appelez ces fonctions sur minigun, ils vous suffit d'appeler le héritée des fonctions.
  • Lorsque je le supprime, le getRate() à l'intérieur de l'Arme est appelée (qui est ce que je veux), mais il renvoie à la "vitesse" constante à partir de l'intérieur de la base classe d'Arme, au lieu de l'un à l'intérieur de Minigun.
  • Je ne suis pas sûr si la surcharge de travaux pour la classe statique des variables de membre ou pas, mais pourquoi ne pas simplement utiliser une fonction qui retourne la valeur directement (par exemple,return 30;) si c'est const de toute façon.
InformationsquelleAutor Jack Wilsdon | 2013-09-02