Я работаю над проектом для школы, и мой учитель хочет, чтобы мы перегрузили оператор «<<», чтобы он добавлял элементы в вектор. Он также хочет, чтобы мы использовали шаблон, чтобы его можно было использовать для любого типа элемента. </p>
Вот мой код заголовочного файла:
template<typename T>
vector<T>& operator<<(vector<T>& v, const T element) {
v.push_back(element);
return v;
}
А вот что я пытаюсь запустить:
v1 << "Atlanta" << "Dallas" << "Chicago" << "Boston" << "Denver";
Я получаю ошибку:
error C2676: binary '<<': 'std::vector<std::string,std::allocator<_Ty>>' does not define this operator or a conversion to a type acceptable to the predefined operator
Может кто-нибудь помочь мне с тем, почему это не работает? Я использую последнюю версию Visual Studio и правильно добавила свои файлы в решение и все остальное. Это работало некоторое время, когда я некоторое время заменял «const T element» на «const string element», но как только я снова добавил реализацию, это не сработало. Спасибо за совет.
РЕДАКТИРОВАТЬ: Спасибо за помощь, вот ответ, который закончил работать на меня:
template<typename T, typename U>
vector<T>& operator<<(vector<T>& v, const U& element) {
v.push_back(element);
return v;
}