Я хотел бы вызвать статический метод из класса, который я определю во время выполнения, но который я знаю, подклассы данного класса. Допустим, у меня есть эти классы
class super {
public:
super();
static super *loadMe (ifstream &is);
}
class subA : public super {
public:
subA();
static super *loadMe (ifstream &is);
}
class subB : public super {
public:
static super *loadMe (ifstream &is);
private:
subB();
}
И, скажем, я хочу определить во время выполнения (на основе того, что находится в файле), следует ли загружать subA или subB дальше. Один из способов сделать это - использовать пустой объект для вызова метода
super getLoadType (ifstream &is) { if(complicatedFunctionOfIs(is)) return subA(); return subB()}
super *newObj = getLoadType(is).loadMe(is);
но я сделал конструктор без аргументов subB private, поэтому я не могу сделать это здесь. Но на самом деле мне не нужен суперобъект, просто тип класса суперкласса. Так есть ли способ представить это как переменную?
РЕДАКТИРОВАТЬ: я знаю, что в этом случае я мог бы вернуть указатель на функцию, но я рассматриваю более сложные примеры, которые могут потребовать вызова более чем одной статической функции.