这是我遇到的问题。这是我的士兵课程:
#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类中公开继承它,我仍然无法访问它。任何帮助将不胜感激。
答案 0 :(得分:3)
确实TabularInline
没有成员Warrior
。它属于m_damage
,只有Soldier
可以初始化它。
您应该允许Soldier
构造函数将damage参数作为参数,并在构造基类时将Soldier
所需的值传递给它。
m_damage