自作クラスのsetterが効いていないのですが、理由が分かりません。
1. まず、以下のPersonクラスを作成しました。
c++
1#pragma once 2#include <string> 3#include <iostream> 4 5class Person 6{ 7private: 8 int Age; 9 std::string Name; 10 11public: 12 Person() 13 { 14 Age = -1; 15 Name = "default"; 16 } 17 void SetAge(int age) 18 { 19 this->Age = age; 20 } 21 void SetName(std::string name) 22 { 23 Name = name; 24 } 25 void Show() 26 { 27 std::cout << Name << "の年齢は" << Age << "歳です。" << std::endl; 28 } 29 ~Person() {} 30};
2. そして次に、以下のmain.cppを実行しました。
c++
1#include "Student.cpp" 2#include <fstream> 3#include <string> 4#include <iostream> 5 6int main(void) 7{ 8 std::ifstream ifs("meibo.dat"); 9 int age; 10 std::string name; 11 int i = 0; 12 Person person[7]; 13 while (ifs >> age >> name) 14 { 15 person[i].SetAge(age); // ここがおかしい? 16 person[i].SetName(name); // ここがおかしい? 17 } 18 19 person[2].Show(); 20 21 return 0; 22}
実行結果は
defaultの年齢は-1歳です。
でした。どうもSetAgeやSetNameが効いていないようです。この原因は何なのでしょうか?
ご教授お願いいたします。
一応meibo.datも付け足しておきます。
meibo.dat
160 春風亭昇太 282 林家木久扇 373 三遊亭好楽 473 三遊亭小遊三 555 林家たい平 649 林家三平 763 山田隆夫
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/05 18:33
2020/07/06 03:01