Chorzen
Chorzen
2017-12-09 15:14
采纳率: 50%
浏览 2.3k

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
    lxy923 2017-12-09 16:53
    已采纳

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

    点赞 评论
  • caozhy
    点赞 评论
  • lxy923
    lxy923 2017-12-09 16:36

    vector& operator=(const vector&);
    vector::operator=(vector const&)

    点赞 评论
  • weixin_41336770
    weixin_41336770 2017-12-10 03:28

    vector& operator=(const vector&);

    点赞 评论
  • qq_41338305
    qq_41338305 2017-12-10 06:23

    建议你可以试一下不要用定义 谢谢 望采纳

    点赞 评论

相关推荐