模板类的友元函数

VS2013 编译《C++沉思录》ch14中的源码时,出现无法解析的外部符号:

错误    1    error LNK2019: 无法解析的外部符号 "class Pointer __cdecl operator+(class Pointer const &,int)" (??H@YA?AV?$Pointer@H@@ABV0@H@Z),该符号在函数 _main 中被引用    E:\zhangyue\learn\src\testsource\RuminationOnCpp\main.obj    RuminationOnCpp

//array.h
template
class Pointer{
template //增加模板声明
friend Pointer operator+(const Pointer&, int);
    ......
};

//array.cpp (c改为cpp, 编译排除)
template
Pointer operator+(const Pointer &p, int len){
      Pointer ret = p;
      return ret += n;
}



 

 解决方法:类模板中的友元函数,增加模板声明:template 

你可能感兴趣的:(C++)