Modèle de fonction à l'intérieur du modèle de classe
J'ai ce code:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
Je le veux sous cette forme:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
Comment je peux faire cela? Quelle est la bonne syntaxe?
- Pourquoi ne pas faire la fonction decl à l'intérieur de la classe decl (voir codepad.org/wxaZOMYW)? Vous ne pouvez pas déplacer la fonction decl de l'en-tête de toute façon, alors...
- FWIW, vous pouvez déplacer la déclaration dans un fichier CPP. Cela dit, je ne l'ai fait cette fois, à faire quelques hackery. Dans ce cas, de savoir comment faire ce qui est essentiel.
- Parfois, on doit se déplacer de la définition de la fonction à l'extérieur de la classe, après la définition des dépendances nécessaires par le corps de la fonction. Ce qui se passe quand la classe à Un usage de la classe B, et que B utilise également A. Dans ce cas, vous déclarez A et B, puis de définir A et B des méthodes.
Vous devez vous connecter pour publier un commentaire.
Écrire ceci:
foo<U>
... frapper le bouton actualiser, peut-être que vous avez vu plus tôt edit 🙂