Шаблоны могут не быть ответом здесь, но я попробовал некоторое наследование, и это не сработало, поэтому здесь я нахожусь.
Проблема:
У меня есть абстрактный базовый классв котором хранятся все мои «рабочие» функции.Затем у меня будет куча других классов, которые расширяют этот базовый класс и, по сути, просто заполняют детали данных для передачи в «рабочие» функции, а также переопределяют пару функций базовых классов.
Одна из основных частей данных, которые будут меняться в каждом производном классе, - это структура.
Итак, мой первоначальный план атаки состоял в том, чтобы определить BaseStruct, а абстрактный базовый класс просто выполнил всю свою работу над этой базовой структурой.Если производные классы используют другую структуру, которая расширяет эту базовую структуру, то это нормально.
Проблема, с которой я столкнулся, заключается в том, что я не могу получить размер структуры, поскольку в рабочей функции типструктура, с которой он работал, - это BaseStruct, а не производный тип.
Так что теперь я смотрю на шаблоны.
По сути, я хочу иметь функцию Base, которая делает это:
template<typename StructType>
void AbstractMaterial::CreateVertexBuffer() {
StructType* array = new StructType[numVertices];
size_t si = sizeof(StructType) * numVertices;
...
}
Конечно, фактически ничего не передавая в эту функцию, она на самом деле не работает.Я бы предпочел не создавать экземпляр StructType для передачи просто для получения информации о типе, но, похоже, нет другого пути?
По сути, я хочу, чтобы производные классы кому-то указали использовать StructType для использованиякогда эта функция вызывается.
Спасибо!