使用私有复制构造函数获取对对象的引用

Taking a reference to an object with a private copy constructor

本文关键字:对象 引用 获取 构造函数 复制      更新时间:2023-10-16

我有一个类T,它使用Boost进行线程处理,因此其成员具有私有复制构造函数。

我想通过引用将T传递给另一个类。然而,当我试着这样做的时候,无论我怎么努力,我都做不好。我可以通过传递指针来实现这一点,但不能传递引用。

传递一个不能复制的对象的引用的正确方法是什么?

OR:如果答案是"你不能通过ref,只能通过指针"。你能解释一下为什么会这样吗?refs不只是语法更温和的指针吗?(我想知道为什么在设计中有这种区别,如果在编译级别,指针和引用之间真的有任何区别。)


UPDATE:在删除这个之前,请注意:

  1. 我从一个使用Boost线程的类中得到这个,在那里,通过引用给了我私有复制构造函数错误,但通过指针没有

  2. 我的理解是100%有可能通过参考

  3. 使停止通过成为可能
  4. 并且Boost线程使用它

如果我的假设是错误的,我将接受任何能澄清我的错误的答案

传递引用的方法:

void foo(int& x)
{}
int main()
{
   int y = 42;
   foo(y);
}

与底层类型是否可复制无关,因为您没有复制它

深入研究后发现,问题不在于引用传递,而在于初始化列表:

 ... : mx(x) {};

我认为如果x是通过引用传递的,那么mx(x)将是对x的引用,但它不是,它是一个副本。

我认为应该将mx声明为引用:int& mx .