使用私有拷贝构造函数

时间:2015-05-27 18:49:42

标签: c++ copy-constructor

我有一个使用Boost进行线程化的类T,因此具有私有拷贝构造函数的成员。

我想通过引用传递给另一个类。但是,当我尝试这样做时,无论我怎么做,我都无法做到。我可以通过传递指针来做到这一点,但不是引用。

将引用传递给无法复制的对象的正确方法是什么?

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

更新:在驳回此消息之前,请注意:

  1. 我是从一个使用Boost线程的类中得到的,其中,通过引用传递给我深层的私有拷贝构造函数错误,但是通过指针传递

  2. 我的理解是,100%可以通过引用停止传递

  3. 并且Boost线程使用它

  4. 如果我的假设是错误的,我会接受任何答案,以澄清我的错误。

2 个答案:

答案 0 :(得分:0)

以下是传递参考的方式:

void foo(int& x)
{}

int main()
{
   int y = 42;
   foo(y);
}

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

答案 1 :(得分:0)

深入挖掘之后,问题不在于引用传递,而是初始化列表所做的:

 ... : mx(x) {};

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

我认为解决方法是将mx声明为参考:int& mx