如何将这段代码更改为有效代码?!
#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
使用参考呼叫方法。
答案 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