在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中存储类类型并从中创建对象(当然也称之为构造函数)
此致
答案 0 :(得分:0)
简短的回答是:你不能因为类型不是C ++中的第一类对象。
答案越长:在某些情况下,您可以使用模板实现相同的目标。
如果您有一个要在类类型上进行参数化的函数,则可以使用模板函数。因此,例如,使用以下内容可以实现类似于上述内容的内容:
template <class MyClassType>
void doSomething() {
MyClassType myObject = MyClassType();
/* Do something with myObject */
}
doSomething<TFooClass>();
doSomething<TBarClass>();
因此,简而言之,您在上面提供的示例无法直接转换为C ++(因为您无法定义变量来保存类型),但根据实际问题,可能会编写类似的代码。