0

Free Pascal では、割り当てられたクラス型からオブジェクトを作成するクラスのクラスを作成できます。例えば:

type
  TBaseClass = class
  end;

  TBaseClassType = class of TBaseClass;

  TFooClass = class(TBaseClass)
  end;

  TBarClass = class(TBaseClass)
  end;

これで、変数を宣言できます。

MyClassType: TBaseClassType;
MyObject: TBaseClass;

そして使用法:

// This will create instance of object TFooClass
MyClassType := TFooClass;
MyObject := MyClassType.Create;

// ... and here of TBarClass
MyClassType := TBarClass;
MyObject := MyClassType.Create;

C++で同様のことを行うにはどうすればよいですか? クラス型をいくつかの var に格納し、そこからオブジェクトを作成する方法 (もちろんコンストラクターと呼びます)

よろしく

4

1 に答える 1

0

簡単に言えば、型は C++ のファーストクラス オブジェクトではないため、できません。

より長い答えは: 場合によっては、テンプレートを使用して同じことを達成できます。

クラス型をパラメーター化したい関数がある場合は、テンプレート関数を使用できます。したがって、たとえば、上記の説明に似たものは、次を使用して実現できます。

template <class MyClassType>
void doSomething() {
  MyClassType myObject = MyClassType();
  /* Do something with myObject */
}

doSomething<TFooClass>();
doSomething<TBarClass>();

要するに、上記の例は (型を保持する変数を定義できないため) C++ に直接変換することはできませんが、実際の問題によっては、同様のコードを記述できる可能性があります。

于 2013-05-11T19:26:10.350 に答える