当前位置:  开发笔记 > 编程语言 > 正文

使用"this"作为复制构造函数的参数

如何解决《使用"this"作为复制构造函数的参数》经验,为你挑选了2个好方法。

我有一个c ++类,假设它叫做c,我想在其中一个方法中使用隐式复制构造函数,如下所示:

c c::do_something() {
  c copy = this; //I want implicit copy constructor here!
  copy.something_else(); 
  //........//
  return copy;
}

但是,gcc返回此错误:

错误:从'c*const'到'long unsigned int'的无效转换

(我有来自long unsigned int的另一个构造函数)

......就好像复制构造函数不存在一样.我究竟做错了什么?



1> tliff..:

是一个指向对象的指针,所以它应该是

c copy = *this;



2> Eclipse..:

相当不谈,但它不会真正适合评论,似乎存在一些分歧.尝试使用这段代码来了解何时调用copy-constructors和赋值运算符:

class A
{
public:
    A() { cout << "A::A()\n"; }
    A(const A &) { cout << "A::A(const A &)\n"; }
    void operator =(const A &) { cout << "A::operator=(const A &)\n"; }
};

int main()
{
    A a; // default constructor
    A copy = a; // copy constructor (and no assignment operator)
    A copy2(a); // copy constructor (and no assignment operator)
    a = copy; // assignment operator
    A function(); // declares a function return A
    A b = A(); // default constructor (but no assignment operator)
    A b2 = A(a); // copy constructor (but no assignment operator)
}

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有