Есть ли способ создать функцию, которая принимает любую версию заданного класса шаблона ?с использованием класса шаблона в качестве аргумента
например. это работает:
ostream& operator << (ostream &out,const Vector<int>& vec);
, но это не делает:
ostream& operator << (ostream &out,const Vector& vec);
Можно ли получить вторую линию, чтобы работать как-то для любой версии вектора? , например. vector<int>
и vector<double>
без необходимости писать 2 отдельных функции?
Добавлен вопрос:
Я сделал оп < < функции шаблона, как вы предложили. Для того, чтобы сделать его друг функцией вектора класса я попытался добавить следующее определение класса Vector, но это не сработало:
friend ostream& operator << (ostream &out, const Vector<T>& vec);
любых идей, что можно сделать, чтобы это исправить?
Вы не можете сделать какую-либо функцию другом класса без редактирования определения класса (и определения там дружбы). Можете ли вы указать, что вы пытаетесь выполнить с оператором, который требует, чтобы он был функцией друга? Вам, вероятно, не нужна дружба. –