我想从一个类中调用一个静态方法,我将在运行时确定这个类,但是我知道它是给定类的子类。所以我们可以说我有这些类在C++中,我可以将类类型表示为变量吗?
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();
}
而且我们说,我想在运行时确定(基于文件中的什么)是否加载苏巴或subB的未来。我能做到这一点的方法之一是使用空对象调用的方法
super getLoadType (ifstream &is) { if(complicatedFunctionOfIs(is)) return subA(); return subB()}
super *newObj = getLoadType(is).loadMe(is);
,但我做了subB的私人的无参数的构造函数,所以我不能在这里这样做。但是我并不需要一个超级对象,而只需要一个超级子类的类型。那么有没有办法将它表示为一个变量?编辑:我知道在这种情况下,我可以返回一个函数指针,但我正在考虑更复杂的例子,可能涉及需要调用多个静态函数。
听起来像你想抽象工厂或类似的东西 – 2010-10-28 13:08:52