我看了at how to pass a bool by reference,但是这个函数返回了它里面的bool。我也看了here on stack overflow,但评论者提出的建议并没有改善我的情况。所以,
我有一个功能:
myTreeNode* search_tree(myTreeNode *test_irater, char p_test, bool &flag)
这显然会返回myTreeNode*
类型。我还有一个变量bool flag
,我想改变函数中的值。但是,当我尝试通过引用传递bool时,我收到错误消息
错误:'bool&'类型的非const引用的初始化无效 来自'bool *'|
类型的右值
如何通过引用传递bool而不返回bool?我正在使用最新版本的CodeBlocks,如果这是相关的。
编辑:代码
myTreeNode* search_tree(myTreeNode *test_irater, char p_test, bool &flag)
{
switch(p_test)
{
case 'a':
if (test_irater->childA == NULL)
flag = false;
else {
test_irater = test_irater->childA;
flag = true;
}
break;
case 't':
if (test_irater->childT == NULL)
flag = false;
else {
test_irater = test_irater->childT;
flag = true;
}
break;
case 'c':
if (test_irater->childC == NULL)
flag = false;
else {
test_irater = test_irater->childC;
flag = true;
}
break;
case 'g':
if (test_irater->childG == NULL)
flag = false;
else {
test_irater = test_irater->childG;
flag = true;
}
break;
}
return test_irater;
}
调用如:
test_irater = search_tree(test_irater, p_test, &flag);
答案 0 :(得分:6)
您正在使用地址(&
)运算符,意味着&flag
已转换为bool*
删除它,它应该工作:
test_irater = search_tree(test_irater, p_test, flag);