L'appel de fonction de modèle dans le modèle de classe

Avertissement: La question suivante est probablement tellement facile que je pourrais être choqué de voir la première réponse. En outre, je tiens à m'excuser pour tous les doublons de questions - syntaxique problèmes ne sont pas toujours faciles à identifier-être l'explication verbale et donc à la recherche pour eux n'est pas aussi facile...

Mais assez de cela. J'ai deux basées sur des modèles de classes, l'un de ceux qui a basé sur un modèle de fonction de membre de l'autre classe tente d'appeler cette fonction. Une minime erreur produisant exemple est montré ci-dessous:

#include <iostream>

template <typename T>
class Foo {
public:
    Foo() {
    }

    template <typename outtype>
    inline outtype bar(int i, int j, int k = 1) {
        return k;
    }

};

template <typename T>
class Wrapper {
public:
    Wrapper() {
    }

    double returnValue() {
        Foo<T> obj;
        return obj.bar<double>(1,2); //This line is faulty.
    }

};

int main() {
    Wrapper<char> wr;
    double test = wr.returnValue();
    std::cout << test << std::endl;
    return 0;
}

Au moment de la compilation, il en résulte

expected primary-expression before 'double'
expected ';' before 'double'
expected unqualified-id before '>' token

où tous les messages d'erreur sont dirigés à la linke marqué dans le code.

J'ai déjà je vous remercie pour vos idées, peu importe comment bien évident qu'ils sont.

  • Explicite de qualification est requise en raison de sa configuration ne peut être déduite. Sans modèle, nous obtenons une erreur de syntaxe, ce qui sera perçu < que l'exploitant est inférieure à....Voir également la langue du point de vue d'auteur dans "13.6. Stroustrup, spec. édition. 935-936."
InformationsquelleAutor Thilo | 2011-09-13