C++ 模板和 friend ,链接器错误

标签 c++ c++11

为什么以下代码无法编译(链接器错误,未解析的外部符号,class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class cClass<int> const &)" (??6@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AEAV01@AEBV?$cClass@H@@@Z))

#include <iostream>

template <class Type> class Class{
    public:
        friend std::ostream& operator<<(std::ostream& Stream, const Class& Op);
};

template <class Type> std::ostream& operator<<(std::ostream& Stream, const Class<Type>& Op){
    return(Stream);
}

int main(){
    Class<int> A;

    std::cout << A;

    return(0);
}

最佳答案

这一行:

friend std::ostream& operator<<(std::ostream& Stream, const Class& Op);

应该是:

template <class T> friend std::ostream& operator<<(std::ostream& Stream, const Class<T>& Op);

关于C++ 模板和 friend ,链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33983366/

相关文章:

c++ - CMakeLists.txt中如何指定CMake的安装路径

c++ - 这不能用可变参数模板参数包来完成吗?

c++ - 派生自在私有(private)范围内声明的类

c++ - 旧发行版上的二进制兼容性(使用 C++11)

c++ - 为什么从 unsigned long long 转换为 double 会导致数据丢失?

c++ - Cuda(NVCC)编译器的_ITERATOR_DEBUG_LEVEL?

c++ - 使用 Eigen 运行 CTest 时出错

c++ - 在 OpenCV 中从 RGB 转换为 YUYV

C++0x 性能改进

c++ - 使用非成员函数是一种好习惯吗?