Вопрос, который у меня есть, - class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Sadrzaj const &)
. Я искал широко и широко в Интернете для решения, но не смог найти его. Проблема возникает, когда я пытаюсь включить Data.h
в основной исходный файл, то же самое происходит с Content.h
. Ниже приведены два файла заголовка для справки. Любая помощь очень ценится. :-)Проблемы с шаблонами в C++
#pragma once
#include <iostream>
class Content
{
friend std::ostream& operator<<(std::ostream &str, const Content&);
public:
virtual void print(std::ostream&) const = 0;
};
std::ostream& operator<<(std::ostream &str, const Content& temp)
{
temp.print(str);
return str;
}
#pragma once
#include "Content.h"
template <class T>
class Data: public Content
{
public:
Data(const T&);
void print(std::ostream&) const override;
private:
T data;
};
template <class T>
Data<T>::Data(const T& data) : data(data) {}
template <class T>
void Data<T>::print(std::ostream& str) const { str << data; }
Вы получаете сообщение об ошибке от компилятора? Добавьте ** точный ** текст сообщения об ошибке. –
Какая * точная * ошибка вы получаете? Кроме того, попробуйте запрограммировать на английском языке, потому что это то, что каждый делает, и поэтому будет легче попросить, дать и получить помощь от кого-либо. – rubenvb
'friend std :: ostream & Sadrzaj :: operator <<' не имеет смысла. возможно, удалить часть 'Sadrzaj ::' –