Displayクラスを継承して、MainWindowクラスとSettingWindowクラスをつくりました。
main()のなかで、MainWindowクラスとSettingWindowクラスのオブジェクトを生成して、メソッドを呼んだところ、Displayクラスのメソッドが呼ばれてしまいました。
MainWindowクラスとSettingWindowクラスのメソッドは、どのようにしたら呼べるでしょうか・・・?
以下にコードを掲載します。
C++
1 1 #include<iostream> 2 2 3 3 using namespace std; 4 4 5 5 namespace SCKELTON{ 6 6 class Display{ 7 7 public: 8 8 virtual void disp(){ 9 9 cout << "Display" << endl; 10 10 } 11 11 }; 12 12 }; 13 13 14 14 namespace LOGIC{ 15 15 class MainWindow : public SCKELTON::Display{ 16 16 void disp(){ 17 17 cout << "MainWindow : Display" << endl; 18 18 } 19 19 }; 20 20 class SettingWindow : public SCKELTON::Display{ 21 21 void disp(){ 22 22 cout << "SettingWindow : Display" << endl; 23 23 } 24 24 }; 25 25 }; 2626 27 27 namespace FACTORY{ 28 28 class Factory{ 29 29 public: 30 30 SCKELTON::Display* getDisplay(int i){ 31 31 if(i == 1){ 32 32 display = new LOGIC::MainWindow; 33 33 }else{ 34 34 display = new LOGIC::SettingWindow; 35 35 } 36 36 return display; 37 37 } 38 38 static Factory* getFactory(){ 39 39 if(!factory){ 40 40 factory = new Factory(); 41 41 } 42 42 return factory; 43 43 } 44 44 static Factory *factory; 45 45 private: 46 46 SCKELTON::Display *display; 47 47 }; 48 48 Factory *(Factory::factory) = new Factory(); 49 49 }; 50 50 51 51 int main() { 52 52 SCKELTON::Display *disp; 53 53 disp = FACTORY::Factory::getFactory()->getDisplay(1); 54 54 disp->disp(); 55 55 disp = FACTORY::Factory::getFactory()->getDisplay(2); 56 56 disp->disp(); 57 57 return 0; 58 58 }
デバッガで実行してみたところ、17行目と、22行目は、通っているようなのですが、なぜか9行目のcout文が実行されてしまいます・・・。
Factoryクラスのオブジェクトをシングルトン?にしてみたのですが、それが悪かったんでしょうか・・・。
ご存知のかたがおりましたら、教えて頂けると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/13 01:16
2019/01/13 12:06
2019/01/13 23:19
2019/01/14 00:17