Y at-il un moyen de le faire automatiquement pour toutes les classes dérivées, que je n'ai pas besoin de créer la fonction applyPack pour toutes les classes imbriquées.Comment peut-on faire cela automatique?
Ceci est mon morceau de code:
/** 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>()); };
};
J'ai lu quelque chose au sujet des traits de caractères, mais je ne veux pas avoir la classe Object templated. Peut-on le faire avec C++ et modéliser certaines fonctions dans la classe TemplatesPack ou avec C++ 0x? s
Qu'est-ce que vous essayez vraiment de faire? Je ne peux pas penser à un cas d'utilisation où ce que vous essayez de faire dans cette question est nécessaire. Il est possible qu'il existe un meilleur moyen d'atteindre votre objectif. –