簡體   English   中英

持有類類型的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM