Hier ist das Problem, das ich habe. Hier ist mein Soldat Klasse:Problem mit dem geerbten geschützten Member (C++)
#ifndef SOLDIER_H
#define SOLDIER_H
#include <iostream>
class Soldier{
protected:
const int m_damage;
public:
Soldier():
m_damage(5)
{}
};
#endif // SOLDIER_H
Und hier ist meine Krieger-Klasse, erbt von ihm:
#ifndef WARRIOR_H
#define WARRIOR_H
#include "Soldier.h"
class Warrior: public Soldier{
public:
Warrior():
m_damage(10)
{}
};
#endif // WARRIOR_H
Das Problem ist, wenn ich das Programm ausführen, ich diesen Fehler:
Warrior.h: In constructor 'Warrior::Warrior()':
Warrior.h:9:9: error: class 'Warrior' does not have any field named 'm_damage'
m_damage(10)
Es scheint, dass, obwohl ich
const int m_damage;
gesetzt habe
Wie in der Soldier-Klasse geschützt und in der Warrior-Klasse öffentlich geerbt, kann ich immer noch nicht darauf zugreifen. Jede Hilfe würde sehr geschätzt werden.
Ein Konstruktor kann andere Member der Klasse nicht initialisieren, nicht einmal die einer Basisklasse. Das ist die Verantwortung des Konstruktors der Basisklasse. Dies hat nichts damit zu tun, dass 'm_damage' geschützt ist. –
Stellen Sie einfach einen 'Soldier'-Konstruktor bereit, den die' Warror'-Klasse verwenden kann. –
Bitte unterschreiben Sie Ihre Beiträge nicht. Ihre Beiträge sind bereits mit Ihrer Benutzerkarte "signiert". – meagar