模板可能不是這裏的答案,但我嘗試了一些繼承,並沒有工作,所以這裏是我在哪裏。C++模板:通過類型,而不是實例?
問題:
我有房子我所有的「工作」功能的抽象基類。然後我會有一大堆擴展該基類的其他類,基本上只是填充數據的細節以傳遞到「工作」函數以及重寫一些基類函數。
將在每個派生類中更改的主要數據塊之一是一個結構。
所以我最初的攻擊計劃是定義一個BaseStruct,抽象基類只是完成了它在基礎結構上的所有工作。如果派生類使用擴展該基本結構的不同結構,那就沒問題。
我遇到的問題是,我無法獲得結構的大小,因爲在工作函數中,它運行的結構類型是BaseStruct而不是派生類型。
所以現在我正在看模板。
基本上我想有一個基本的功能,這是否:
template<typename StructType>
void AbstractMaterial::CreateVertexBuffer() {
StructType* array = new StructType[numVertices];
size_t si = sizeof(StructType) * numVertices;
...
}
當然實際上不傳遞任何進入該功能,它並沒有真正發揮作用。我寧願不創建一個StructType的實例來傳入,只是爲了獲取類型信息,但它似乎沒有任何其他方式?
本質上我想派生類給某人指定一個StructType來調用此函數時使用。
謝謝!
感謝您的迴應! – Jon