多重継承をしているクラスをアップキャスト後にダウンキャストした際にうまくつかえなくなってしまいます。
クラス自体が多重継承していても一度アップキャストしてしまうと、別の流れを組でいた側の機能は使えなくなってしまうのでしょうか?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Human {
protected:
string name;
public:
virtual void show() {
cout << "Human" << endl;
}
};
class Japanese :public Human {
protected:
string todouhuken;
public:
virtual void show() {
cout << "Japanese" << endl;
}
};
class Woman {
protected:
int age = 21;
public:
virtual void ages(int) = 0;
};
class Nadeshiko :public Japanese, public Woman {
public:
Nadeshiko(string name) {
Human::name = name;
}
void show() {
cout << "Nadeshiko" << endl;
}
void ages(int nowAge) {
age = nowAge;
}
};
void main()
{
vector<Human> humanList;
Nadeshiko nadeshiko("よしこ"); humanList.push_back(nadeshiko);//アップキャスト //省略 for each(Human h in humanList) { Human* ph; ph = &h; Nadeshiko* pn; pn = dynamic_cast<Nadeshiko *>(ph);//ダウンキャスト pn->ages(30);//ここでエラーがでる }
}
よろしくおねがいします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/19 05:27