наследование — c ++, как понизить рейтинг от наследованного

У меня есть класс с именем «package», который является основой производного «shader_package».

Экземпляры пакета обычно генерируются исключительно в функции с именем load. Он имеет указатель на пакет в качестве возвращаемого параметра. Поэтому я также могу вернуть каждый класс, полученный из пакета из-за наследования. Тем не менее, когда передается информация о типе теряется (правильно?), И я не могу больше знать, каким был исходный класс.

В моем случае, однако, это не должно быть проблемой. Вещество, возвращаемое загрузчиком, предполагается использовать в конструкторе класса или операторе присваивания, который затем использует информацию в производном от коррелирующего пакета для инициализации своих переменных-членов.

Как я могу сделать это правильно, без использования типа объединения или варианта?

РЕДАКТИРОВАТЬ:

Какой-то псевдокод, иллюстрирующий то, чего я хочу достичь

class package{
//actual contents are not relevant. The base doesnt have any virtual functions. Only data
}
.
class shader_package:public package{
private:
shaderData data;
public:
//getters setters and other standard stuff. Not really relevant
}
.
.
package* import(const char* path){
string extension = getExtension(path);
if(extension == ".shader"){
shaderData data;
//somehow populate shaderData
return new shader_package(shaderData);
}
/* Check for other types and return other derived packages*/
}
.
.
.
main{
shader nShader(import("pathToShader"));
/*Do stuff with it*/
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector