我有一个使用Boost进行线程化的类T,因此具有私有拷贝构造函数的成员。
我想通过引用传递给另一个类。但是,当我尝试这样做时,无论我怎么做,我都无法做到。我可以通过传递指针来做到这一点,但不是引用。
将引用传递给无法复制的对象的正确方法是什么?
OR:如果答案是“你不能通过ref,只能指针”。你能解释一下为什么会这样吗?是不是仅仅指针具有更温和的语法? (我想知道为什么在设计中有这种区别,并且,如果在编译级别,指针和引用之间确实存在任何差异。)
更新:在驳回此消息之前,请注意:
我是从一个使用Boost线程的类中得到的,其中,通过引用传递给我深层的私有拷贝构造函数错误,但是通过指针传递
我的理解是,100%可以通过引用停止传递
并且Boost线程使用它
如果我的假设是错误的,我会接受任何答案,以澄清我的错误。
答案 0 :(得分:0)
以下是传递参考的方式:
void foo(int& x)
{}
int main()
{
int y = 42;
foo(y);
}
底层类型是否可复制无关紧要,因为您没有复制它。
答案 1 :(得分:0)
深入挖掘之后,问题不在于引用传递,而是初始化列表所做的:
... : mx(x) {};
我原以为如果x
通过引用传递,那么mx(x)
将是对x的引用。但它不是,它是一个副本。
我认为解决方法是将mx
声明为参考:int& mx
。