Chorzen 2017-12-09 15:14 采纳率: 50%
浏览 2437
已采纳

C++关于模板类引用作为返回值的问题

跟着《C++程序设计原理与实践》编写vector容器的模板实现,在编写vector的拷贝函数时出现了该函数未定义的问题,
在模板类vector中该函数定义如下:
vector& operator=(const vector&);
//改成vector& operator=(const vector&); 也不行弹出的错误代码是一样的

该函数声明如下:
vector& vector::operator=(const vector& v)
{
if(this == &v) return this;
if(v.sz <= sp) {
for(int i=0; i<v.sz; i++) elem[i] = v.elem[i];
sz = v.sz;
return *this;
}
T
cp = new T[v.sz];
copy(v.elem, v.elem + v.sz, cp);
delete[] elem;
sp = sz = v.sz;
elem = cp;
return *this;
}
Main函数中这样使用的
vector v(2);
vector v2{1};

v = v2; //问题就出现在这了~

错误代码如下:
“对‘vector::operator=(vector const&)’未定义的引用 ”

//为什么vector源码中没有对'='的重载呢?

使用g++11编译的,希望能获得大神的解答,谢谢啦

  • 写回答

5条回答 默认 最新

  • lxy923 2017-12-09 16:53
    关注

    不要定义,函数放到类内部,试下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器