模板可能不是这里的答案,但我尝试了一些继承,并没有工作,所以这里是我在哪里。C++模板:通过类型,而不是实例?
问题:
我有房子我所有的“工作”功能的抽象基类。然后我会有一大堆扩展该基类的其他类,基本上只是填充数据的细节以传递到“工作”函数以及重写一些基类函数。
将在每个派生类中更改的主要数据块之一是一个结构。
所以我最初的攻击计划是定义一个BaseStruct,抽象基类只是完成了它在基础结构上的所有工作。如果派生类使用扩展该基本结构的不同结构,那就没问题。
我遇到的问题是,我无法获得结构的大小,因为在工作函数中,它运行的结构类型是BaseStruct而不是派生类型。
所以现在我正在看模板。
基本上我想有一个基本的功能,这是否:
template<typename StructType>
void AbstractMaterial::CreateVertexBuffer() {
StructType* array = new StructType[numVertices];
size_t si = sizeof(StructType) * numVertices;
...
}
当然实际上不传递任何进入该功能,它并没有真正发挥作用。我宁愿不创建一个StructType的实例来传入,只是为了获取类型信息,但它似乎没有任何其他方式?
本质上我想派生类给某人指定一个StructType来调用此函数时使用。
谢谢!
感谢您的回应! – Jon