前提・実現したいこと
VisualStudioを用いたc++のプログラミング学習。
原因がわからないため、多量のソースコードを掲載してしまいました。
###問題点
出力値をLastBossで入力した値にしたいのですが、Humanで入力した値のみ出力されます。派生クラスで定義したデータメンバを参照出来ていないと考えています。
継承を利用し、基底クラスで定義したGetter/Setterを利用した上で解決できますでしょうか?
発生している問題・エラーメッセージ
出力結果
0 は 30のダメージをうけた
該当のソースコード
Human
1class Human 2{ 3public: 4 Human(); 5 ~Human(); 6 //Setter/Getter 7 std::string GetName(); 8 void SetName(std::string _name); 9 int GetVitality(); 10 void SetVitality(int _vitality); 11private: 12 int vitality; 13}; 14Human::Human() { 15 vitality = 0; 16} 17std::string Human::GetName() { 18 return this->name; 19} 20void Human::SetName(std::string _name) { 21 this->name = _name; 22} 23int Human::GetVitality() { 24 return this->vitality; 25} 26void Human::SetVitality(int _vitality) { 27 this->vitality = _vitality; 28} 29
Yuusya
1class Yuusya : public Human 2{ 3public: 4 Yuusya(); 5 ~Yuusya(); 6private: 7 Human _super; 8}; 9Yuusya::Yuusya(){ 10 _super.SetName("ゆうしゃ"); 11 _super.SetVitality(100); 12}
LastBoss
1class LastBoss : public Human 2{ 3public: 4 LastBoss(); 5 ~LastBoss(); 6 7private: 8 Human _super; 9}; 10 11LastBoss::LastBoss(){ 12 _super.SetName("らすぼす"); 13 _super.SetVitality(500); 14} 15LastBoss::~LastBoss(){} 16 17void LastBoss::SpecialEvilAttack(Human target) { 18 target.SetVitality(target.GetVitality() - 30); 19 std::cout << target.GetName() << " は 30 のダメージをうけた" << std::endl; 20} 21
C++
1int main(){ 2 LastBoss lastBoss; 3 4 std::cout << lastBoss.GetMagic() << std::endl; 5 lastBoss.SpecialEvilAttack(yuusya); 6 7 return 0; 8}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 13:06