2016-03-31 9 views
2

私はat how to pass a bool by referenceを見ましたが、その関数はその内部のboolを返しました。私もhere on stack overflowを見ましたが、コメント者の提案は私の状況を改善しませんでした。bool以外の関数で参照によってbool変数を渡すにはどうすればよいですか?

myTreeNode* search_tree(myTreeNode *test_irater, char p_test, bool &flag) 

明らかmyTreeNode*タイプを返しますので、

私は機能を持っています。私も関数内の値を変更したい変数bool flagを持っています。私が参照によってブール値を渡すしようとすると、しかし、私はどのように私はブール値を返さずに参照することによってブール値を渡して行くのです

error: invalid initialization of non-const reference of type 'bool&' from an rvalue of type '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); 
+3

このエラーを生成するコードを表示してください。 – jtbandes

+0

コードを編集するために編集しました。 –

答えて

5

あなたは&flagbool*

に変換されることを意味、(&)演算子をのAddressOfを使用している、それを削除し、それが必要仕事:

test_irater = search_tree(test_irater, p_test, flag); 
+0

この関数は機能しますが、 'flag'の値が変更されているとは思われません。 –

+0

@NickPredeyそれは動作します。関数のシグネチャが参照を受け取ると、渡された引数への参照が取得されます。デモがあります:http://ideone.com/tDKK0s – Jts

+0

さて、関数を再評価し、それが問題かどうかを確認します。 –

関連する問題