【发布时间】:2017-01-05 12:54:18
【问题描述】:
我在这里遇到的问题是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 也会发生同样的情况。下面是两个头文件供参考。非常感谢任何帮助。 :-)
#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; }
【问题讨论】:
-
您是否收到来自编译器的错误消息?添加错误消息的确切文本。
-
你得到了什么exact错误?另外,尝试用英语编程,因为每个人都会这样做,因此更容易向任何人寻求、给予和接受帮助。
-
friend std::ostream& Sadrzaj::operator<<没有意义。也许删除Sadrzaj::部分
标签: c++ c++11 templates compiler-errors linker