如何在非bool函数中通过引用传递bool变量?

时间:2016-03-31 04:36:31

标签: c++

我看了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); 

1 个答案:

答案 0 :(得分:6)

您正在使用地址(&)运算符,意味着&flag已转换为bool*

删除它,它应该工作:

test_irater = search_tree(test_irater, p_test, flag);