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

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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog