class Game
{
}
class SceneBase
{
public:
virtual void init() = 0;
virtual void main() = 0;
}
class Scene1 : public SceneBase
{
public:
void init() override;
void main() override;
}
class Scene2 : public SceneBase
{
public:
void init() override;
void main() override;
}
class Scene3 : public SceneBase
{
public:
void init() override;
void main() override;
}
SceneBaseという基本クラスの型にした配列を作り、
配列要素にScene1からScene3のインスタンスを
アップキャストして入れたい。
その配列の添え字を変えることで
場面を切り替えることをしたい。
その配列はGameクラスのメンバに持たせたい。
と言った感じです。
C++の経験は1ヶ月も満たない初心者ですが、
C#なら少しだけわかります。
using System;
class Program
{
// 配列にアップキャストして入れる
static SceneBase[] scenes = {
new Title(),
new Battle(),
new Ending()
};
public static void Main()
{
// iの値を変えるだけで場面の分岐ができる
int i;
for (i = 0; i < 3; i++)
scenes[i].main();
}
}
/* 抽象クラス */
abstract class SceneBase
{
// 派生クラスで実装させる
public abstract void main();
}
/* タイトル場面 */
class Title : SceneBase
{
public override void main()
{
Console.WriteLine("タイトル場面");
}
}
/* バトル場面 */
class Battle : SceneBase
{
public override void main()
{
Console.WriteLine("バトル場面");
}
}
/* エンディング場面 */
class Ending : SceneBase
{
public override void main()
{
Console.WriteLine("エンディング場面");
}
}
どのようにすればいいのかが分かりません。
コードをいただけないでしょうか。