継承しているが呼ばれない
Posted: 2010年5月06日(木) 08:20
下にあるソースでModuleDを継承させ
Module10::Exe()
Module10::Exe2()
を実装しましたが
Module10::Exe2 は呼ばれずに ModuleD::Exe2 が呼ばれてしまいます
やりたいこととしては Module10 に メソッドを追加して
ModuleD インスタンスからそのメソッドをよびたいのですがうまくいきません
どこが間違っているのでしょうか?

Module10::Exe()
Module10::Exe2()
を実装しましたが
Module10::Exe2 は呼ばれずに ModuleD::Exe2 が呼ばれてしまいます
やりたいこととしては Module10 に メソッドを追加して
ModuleD インスタンスからそのメソッドをよびたいのですがうまくいきません
どこが間違っているのでしょうか?
// 123.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include <vector> using namespace std; class Module { public: virtual void Exe() = 0; }; class ModuleD : public Module { public: void Exe(); void Exe2(); }; class Module10 : public ModuleD { public: void Exe(); void Exe2(); }; class Module20 : public ModuleD { public: void Exe(); }; void ModuleD::Exe() { printf( "ModuleD::Exe()\n" ); } void ModuleD::Exe2() { printf( "ModuleD::Exe2()\n" ); } void Module10::Exe() { printf( "Module10::Exe()\n" ); } void Module10::Exe2() { // よばれない printf( "Module10::Exe2()\n" ); } void Module20::Exe() { printf( "Module20::Exe()\n" ); } int _tmain(int argc, _TCHAR* argv[/url]) { ModuleD *module10 = new Module10; ModuleD *module20 = new Module20; vector<ModuleD*> manager; manager.push_back( module10 ); manager.push_back( module20 ); vector<ModuleD*>::iterator p = manager.begin(); while( p != manager.end() ) { (*p)->Exe(); (*p)->Exe2(); p++; } delete module10; delete module20; return 0; }
