2016-03-31 23 views
2

at how to pass a bool by reference'a baktım, ancak bu işlev içinde boole döndü. Ayrıca here on stack overflow'u da inceledim, ancak yorumcular tarafından yapılan öneriler durumumu iyileştirmedi. Açıkçası myTreeNode* türünü döndürürBool değişkeni, bool olmayan bir işleve referans olarak nasıl iletilir?

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

: Yani

Ben bir işlevi var. Ayrıca, fonksiyonun değerini değiştirmek istediğim bool flag değişkenim de var. Ben referans olarak bool geçmesine çalıştığınızda Ancak, ben bir bool dönmeden referans olarak bir bool geçirilmesi konusunda gitmek nasıl

error: invalid initialization of non-const reference of type 'bool&' from an rvalue of type 'bool*'|

bir hata mesajı alıyorum? İlgili ise, CodeBlock'ların en son sürümü üzerinde çalışıyorum.

Düzenleme: kaldırın bool*

dönüştürülür &flag anlam

test_irater = search_tree(test_irater, p_test, &flag); 
+3

Lütfen bu hatayı üreten kodu göster. – jtbandes

+0

Kodu göstermeye düzenledim. –

cevap

5

Sen (&) operatörünü AddressOf kullanıyorsanız ve olması gerektiği: Kod gibi

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; 
} 

denilen iş:

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

işlev çalışıyor, ancak "flag" değerini değiştirdiğini düşünmüyorum. –

+0

@NickPredey çalışacaktır. Eğer fonksiyon imzanız bir referans alırsa, o zaman girdiğiniz argümana bir referans alır. İşte bir demo: http://ideone.com/tDKK0s – Jts

+0

Tamam, fonksiyonumu yeniden değerlendiririm ve sorun olup olmadığını göreceğim. –

İlgili konular