![](/img/trans.png)
[英]Creating a Timer class, what data type should I use to hold values? (C/C++)
[英]C++ Type which hold class type
在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中並從中創建對象(當然也將其稱為構造函數)
問候
簡短的答案是:您不能,因為類型不是C ++中的一流對象。
更長的答案是:在某些情況下,您可以使用模板來實現相同的目的。
如果您有要對類類型進行參數化的函數,則可以使用模板函數。 因此,例如,可以使用以下方法實現與您上面描述的類似的東西:
template <class MyClassType>
void doSomething() {
MyClassType myObject = MyClassType();
/* Do something with myObject */
}
doSomething<TFooClass>();
doSomething<TBarClass>();
因此,簡而言之,上面給出的示例不能直接轉換為C ++(因為您不能定義一個變量來保存類型),但是根據實際問題,可能可以編寫類似的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.