我想从我将在运行时确定的类中调用一个静态方法,但我知道它是给定类的子类。所以假设我有这些课程
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 的无参数构造函数设为私有,所以我不能在这里这样做。但我实际上并不需要超级对象,只需要超级子类的类类型。那么有没有办法将其表示为变量?
编辑:我知道在这种情况下,我可以返回一个函数指针,但我正在考虑可能需要调用多个静态函数的更复杂的示例。