通过参考bool类型来调用

时间:2014-05-24 14:45:57

标签: c++ boolean pass-by-reference

如何将这段代码更改为有效代码?!

#include <iostream>

void foo( bool &b )  // ERROR in passing argument 1 of ‘void foo(bool&)’
{
   std::cout << b << '\n';
}

int main()
{
  foo( false );   // ERROR invalid initialization of non-const reference of type ‘bool&’ from a temporary of type ‘bool’
  return 0;
}

请注意,想要使用&b使用参考呼叫方法。

2 个答案:

答案 0 :(得分:2)

按引用调用需要一个地址,你传递一个常量。为什么没有

bool aValue;
aValue = false;
foo(aValue);

答案 1 :(得分:1)

foo( false );

这会使用bool类型的临时对象调用foo。

您无法将临时绑定到非const引用,从而导致错误。在const引用

的情况下是可能的
void foo( const bool &b );
//...
foo( false ); // OK

在您的情况下,似乎您不想更改传递给函数的对象,而只是打印它。然后就不需要传递引用,只需按值传递对象。

void foo( bool b ) { std::cout << b;}
//...
foo( false ); // OK