класс шаблона c ++; функция с произвольным типом контейнера, как ее определить?

Хорошо, простой шаблонный вопрос. Скажем, я определяю свой класс шаблона примерно так:

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;
}

Вопрос в моей функции панели ... Мне нужно, чтобы она могла использовать какой-то стандартный контейнер, поэтому я включил часть шаблона / имени типа C, чтобы определить этот тип контейнера. Но, очевидно, это неправильный способ, поскольку мой тестовый класс затем жалуется, что:

error: 'bar' не был объявлен в этой области видимости

Итак, как я могу правильно реализовать свою функцию bar? То есть как функция моего класса шаблона с произвольным типом контейнера ... остальная часть моего класса шаблона работает нормально (имеет другие функции, которые не приводят к ошибке), это всего лишь одна функция, которая проблематична.

РЕДАКТИРОВАТЬ: Итак, конкретная функция (полоса) - это функция eraseInRange, которая стирает все элементы в указанном диапазоне:

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

И пример того, как она будет использоваться:

eraseInRange(v, 7, 19);

где v в данном случае вектор.

РЕДАКТИРОВАТЬ 2: Глупый я! Я должен был объявить функцию вне моего класса, а не в нем ... делать довольно досадную ошибку. В любом случае, спасибо всем за помощь, хотя проблема была немного другой, информация помогла мне построить функцию, так как после обнаружения моей исходной проблемы я получил несколько других приятных ошибок.Так что спасибо тебе!

20
задан Benjamin 13 July 2014 в 20:36
поделиться