Хорошо, простой шаблонный вопрос. Скажем, я определяю свой класс шаблона примерно так:
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: Глупый я! Я должен был объявить функцию вне моего класса, а не в нем ... делать довольно досадную ошибку. В любом случае, спасибо всем за помощь, хотя проблема была немного другой, информация помогла мне построить функцию, так как после обнаружения моей исходной проблемы я получил несколько других приятных ошибок.Так что спасибо тебе!