C++での質問です。
オーバーライドを使いたいのですが
予想通りに動きません。これはどうしてなのでしょうか?
予想
最終的に
printf("%d\n",saList[1].Get());
の行動が
printf("%d\n",SaList[1]->Get());
と同じにしたいのですが。
2回目のsaList.Getでsbと表示したい。
class sa{
public:
	int a;
	virtual int Get(){
		printf("sa\n");
		return a;
	}
	sa(){a=0;}
};
class sb:public sa{
	int b;
public:
	int Get(){
		printf("sb\n");
		return b;
	}
	sb(){a=10,b=20;}
};
sa *SaList[2] = {
	//{new sa},
	//{new sb},
};
//クラスをまとめるリスト
sa *saList;
sa Make_StateList2(sa List[]){
	saList = List;
	return List[0];
}
int main(){
	//クラスのを作成(アドレスとびとび)
	SaList[0] = new sa();
	SaList[1] = new sb();
	
	//そのままの状態を表示
	printf("%d\n",SaList[0]->Get());
	printf("%d\n",SaList[1]->Get());
	//クラスリストに代入(配列にいれて添字でアクセスできるように)
	saList = new sa[2];
	saList[0] = *SaList[0];
	saList[1] = *SaList[1];
	//クラスリストに代入されたものを使う
	printf("%d\n",saList[0].Get());
	printf("%d\n",saList[1].Get());
よろしくお願いします。