有没有办法为所有派生类自动执行此操作,我不必为所有嵌套类创建函数applyPack。如何做到这一点自动?
这是一张我的代码:
/** every class has registered id with this function */
template<typename T>
uint getID() {
static uint id = registerClass<T>();
return id;
}
class TemplatesPack {
public:
template<typename T>
typename T::Template get();
};
class Object {
public:
virtual void applyPack(TemplatesPack *p) { this->setTemplate(p->get<Object>()); };
};
class Object2: public Object {
public:
void applyPack(TemplatesPack *p) { this->setTemplate(p->get<Object2>()); };
};
class Object3: public Object {
public:
void applyPack(TemplatesPack *p) { this->setTemplate(p->get<Object3>()); };
};
class Object4: public Object2 {
public:
void applyPack(TemplatesPack *p) { this->setTemplate(p->get<Object4>()); };
};
我读过一些关于类型的特征,但我不希望有Object类模板。这可以用C++完成,并在类TemplatesPack或C++ 0x中模板化一些函数? s
你真的想做什么?我不能想到一个用例,你需要在这个问题中试图做什么。有可能有更好的方法来实现你的目标。 – 2010-11-07 11:10:43