c++ de la classe de modèle; fonction arbitraire type de conteneur, comment le définir?

Bon, simple question. Dis-je définir ma classe de modèle à quelque chose comme ceci:

template<typename T>
class foo {
public:
    foo(T const& first, T const& second) : first(first), second(second) {}

    template<typename C>
    void bar(C& container, T const& baz) {
        //...
    }
private:
    T first;
    T second;
}

La question est à propos de ma barre de fonction... j'en ai besoin pour être en mesure d'utiliser un conteneur standard, ce qui est pourquoi j'ai inclus le modèle/typename C partie, à définir ce type de conteneur. Mais apparemment ce n'est pas la bonne façon de le faire, depuis ma classe de test puis se plaint qu':

erreur: 'bar' n'a pas été déclarée dans ce cadre

Alors, comment pourrais-je aller sur la mise en œuvre de ma fonction de la barre de la bonne façon? C'est, en fonction de ma classe de modèle, avec l'arbitraire d'un type de conteneur... le reste de ma classe de modèle fonctionne très bien (il a d'autres fonctions qui ne sont pas d'entraîner une erreur), c'est juste qu'une fonction qui est problématique.

EDIT:
Ok, donc la fonction spécifique (la barre) est une eraseInRange fonction, qui efface tous les éléments dans une plage spécifiée:

void eraseInRange(C& container, T const& firstElement, T const& secondElement) {...}

Et un exemple de la façon dont elle sera utilisée serait:

eraseInRange(v, 7, 19);

où v est un vecteur dans ce cas.

EDIT 2:
Je suis bête! J'étais censé déclarer la fonction en dehors de ma classe, et non en lui... assez frustrant erreur à faire. De toute façon, merci à tous pour l'aide, mais le problème était un peu différent, l'information m'a aidé à construire la fonction, car après avoir trouvé mon problème d'origine, j'ai eu un autre agréable erreurs. Donc, je vous remercie!

Veuillez fournir un exemple de la façon dont vous utilisez les foo<T> class et le pied<T>::bar<C> la méthode. Le problème est probablement à l'aide de votre code.
Le code que vous avez posté compile bien. Où en êtes-vous réellement avoir le problème?
Votre classe de test n'arrive pas à la inherit de foo? Voir parashift.com/c++-faq-lite/modèles.html#faq-35.19
J'espère que mon montage efface un peu? La classe de test a été fournie pour l'exercice, de sorte que je ne devrais pas changer la façon dont la méthode est appelée, mais il se plaint de la eraseInRange mehtod pas être déclaré...
Puisque nous ne savons pas ce que votre pilote d'essai est en train de faire, nous ne pouvons pas les aider beaucoup. Ne le travail en classe pour vous, par exemple, si vous utilisez eraseInRange - vous avec un vecteur?

OriginalL'auteur Fault | 2011-10-11