ハムスターに飼われる院生のブログ

自分用メモが中心のブログです。

既存クラスを呼び出すか継承クラスを呼び出すかif関数で選択し、仮想関数を実行

既存クラスOperationManagerを継承したクラスMethod_Aがあるとする。
既存クラスを呼び出すか、継承したクラスを呼び出すか、メイン関数からifで選択するようにした時のコードは以下の通り。

int main() {
	bool keisyou= true;
	OperationManager *operation;
	if (keisyou)
		operation= new Method_A();
	else operation= new OperationManager ();	
	operation->function();

	return 0;
}

呼び出すクラスを指定したのち、仮想関数function()を実行している。

OperationManager.h ↓

class OperationManager
{
	virtual void function() {
		//何らかの処理
	}
}

Method_A.h ↓

class Method_A:public OperationManager
{
	virtual void function() {
		//何らかの処理(既存クラスのfunction()とは中身が異なってもよい)
		}
	}
};