Хорошо, просто вопрос с шаблоном. Скажем, я определяю свой класс шаблонов примерно так:
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;
}
Вопрос о моей функции бара... Мне нужно, чтобы он мог использовать стандартный контейнер какого-то типа, поэтому я включил часть шаблона /typename C, чтобы определить этот тип контейнера. Но, видимо, это не правильный способ сделать это, так как мой тестовый класс жалуется, что:
error: "bar" не был объявлен в этой области
Итак, как я мог бы правильно реализовать свою функцию бара? То есть, как функция моего класса шаблона, с произвольным типом контейнера... остальная часть моего класса шаблонов отлично работает (имеет другие функции, которые не приводят к ошибке), это просто одна функция, которая проблематична.
EDIT: Итак, специальная функция (bar) - это функция eraseInRange, которая стирает все элементы в указанном диапазоне:
void eraseInRange(C& container, T const& firstElement, T const& secondElement) {...}
И пример того, как он будет использоваться, будет:
eraseInRange(v, 7, 19);
где v - вектор в этом случае.
ИЗМЕНИТЬ 2: Дурак я! Я должен был объявить функцию за пределами моего класса, а не в этом... довольно неприятную ошибку. В любом случае, спасибо всем за помощь, хотя проблема была немного иной, эта информация помогла мне построить эту функцию, так как после обнаружения моей оригинальной проблемы я получил некоторые другие приятные ошибки. Так что спасибо!