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.
InformationsquelleAutor Michael | 2011-12-27