【问题标题】:Template issues in C++C++ 中的模板问题
【发布时间】: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&amp; Sadrzaj::operator&lt;&lt; 没有意义。也许删除 Sadrzaj:: 部分

标签: c++ c++11 templates compiler-errors linker


【解决方案1】:

好的,所以问题是

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多