1
我在这里遇到的问题是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 ::'部分 –