ここに私が持っている問題があります。ここに私の兵士のクラスがある:継承された保護されたメンバーを使用して問題が発生しました(C++)
#ifndef SOLDIER_H
#define SOLDIER_H
#include <iostream>
class Soldier{
protected:
const int m_damage;
public:
Soldier():
m_damage(5)
{}
};
#endif // SOLDIER_H
そして、ここではそれを継承し、私の戦士のクラスです:
#ifndef WARRIOR_H
#define WARRIOR_H
#include "Soldier.h"
class Warrior: public Soldier{
public:
Warrior():
m_damage(10)
{}
};
#endif // WARRIOR_H
問題は、私はプログラムを実行すると、私はこのエラーを取得することです:
Warrior.h: In constructor 'Warrior::Warrior()':
Warrior.h:9:9: error: class 'Warrior' does not have any field named 'm_damage'
m_damage(10)
私は設定したようですが、そうだと思われます。
const int m_damage;
Soldierクラスで保護され、Warriorクラスで公開されているように、私はまだアクセスできません。どんな助けでも大歓迎です。
コンストラクタは、他のクラスのメンバを初期化することはできません。ベースクラスのメンバは初期化できません。それは基本クラスのコンストラクタの責任です。これは 'm_damage'が保護されていることとは関係ありません。 –
'Warror'クラスが使用できる' Soldier'コンストラクタを提供するだけです。 –
あなたの投稿に署名しないでください。あなたの投稿はあなたのユーザーカードですでに "署名"されています。 – meagar