2016-10-20 9 views
0

参照の仕組みに関する小さな混乱。 参照がある場合は、メンバーメソッドと変数にアクセスできますか?ポインタと同じではないでしょうか?参照をポインタに変換できますか?参照のメンバーvarialbesまたはメソッドにアクセスできません。

問題はgetName()さらに

template <typename T> 
bool BSTree<T>::insert(BSTNode<T>* currentnode, T* data) { 
    std::string value = data -> getName(); 
    std::string current = currentnode -> getData() -> getName(); 
    return false; 
} 

の戻りオブジェクトから要素にアクセスするには誤差があるさ:私はgetName()を使用しようとすると

->のベースオペランドが非ポインタ型Objectを持っています」メソッドがオブジェクトgetData()の一部である(参照を介して)返されている場合、それはなぜ前の行のように動作しないのですか?私の前のプログラムでは、getData()に似たメソッドを使ってオブジェクトを返すのはうまくいきました。

+1

詳細情報が必要です。また、テキストをテキストの絵としてではなく、テキストとして投稿してください。 – drescherjm

+0

画像ではなくコードをcut'n'pasteしてください –

+0

エラーの内容をお知らせください(赤色の波状の下線)。または、この行に関連するコンパイラからの出力。 PSスタックのオーバーフローにはコードの強調表示と書式設定があり、コードのイメージの代わりにそのコードを使用します。 – esecules

答えて

2

を使用する必要があります参照(ないポインタ)を返すことです:

std::string current = currentnode->getData().getName(); 

一般に、->はポインタを逆参照しますが、参照には使用しません。

+0

はいこれは意味があります。 – Ky6000

1

...「私はのgetDataは、(参照によって)返しているオブジェクトの一部であるのgetName()メソッドを使用しようとすると、」私たちはgetDataが宣言されているかを確認することはできませんが、チャンスそれは、したがって、あなたがgetData()参照を返している場合は、あなたが使用し.ない->

関連する問題