0
這是我遇到的問題。這裏是我的士兵等級:使用繼承的受保護成員(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