在作为引用传递的参数中创建对象

时间:2014-03-29 13:39:27

标签: c++

所以这段代码不会起作用,而且可能是一个菜鸟问题。

const Foo foo(Bar(10));

其中Foo的构造函数是:

Foo::Foo(Bar &bar) : bar(bar) {}

错误

  

没有用于调用Foo :: Foo(Bar&)

的匹配函数

1 个答案:

答案 0 :(得分:4)

在说

时,您正在传递对const Bar对象的引用
const Foo foo(Bar(10));

Bar(10)创建一个临时对象。

您需要更改构造函数签名:

Foo::Foo(const Bar &bar) : bar(bar) {}
      // ^^^^^