Хорошо, я немного застрял в попытке перегрузить оператор < < для моего класса шаблонов. Требование состоит в том, чтобы оператор < < должен вызывать функцию печати пустоты, определенную для этого класса.оператор << перегрузка для вызова функции функции печати
Вот важный материал из шаблона заголовка:
template <class T>
class MyTemp {
public:
MyTemp(); //constructor
friend std::ostream& operator<< (std::ostream& os, const MyTemp<T>& a);
void print(std::ostream& os, char ofc = ' ') const;
и вот моя функция печати в основном это вектор и печатает последний элемент в первом:
template <class T>
void Stack<T>::print(std::ostream& os, char ofc = ' ') const
{
for (int i = (fixstack.size()-1); i >= 0 ; --i)
{
os << fixstack[i] << ofc;
}
}
и вот как я у оператора < < перегруженный:
template <class T>
std::ostream& operator<< (std::ostream& os, const Stack<T>& a)
{
// So here I need to call the a.print() function
}
Но я получаю ошибку «неразрешенный внешний символ». Так что я думаю, у меня есть две проблемы. Во-первых, это способ исправить ошибку выше. Во-вторых, как только это исправлено, я просто позвоню a.print (os) внутри < < перегрузка? Я знаю, что он должен вернуть обратно. Любая помощь будет принята с благодарностью!
читайте этот файл: http://www.parashift.com/c++-faq/templates.html#faq-35.16 –
Вы вызываете шаблон шаблона 'MyTemp' в первом фрагменте и' Stack' в других.Вы делаете это в своем реальном коде? –