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 回答