有沒有辦法爲所有派生類自動執行此操作,我不必爲所有嵌套類創建函數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