2011-12-07 26 views
2

に私はこれらのエラーを取得します私のクラスのメンバー:ラインでポインタと参照のエラーは、C++

A* righNode; 
A* leftNode; 
int levels; 
int element; 

私が使用している場合
b.levels = 1 + max(b.rightNode, tree); 

は - > instedのポイント演算子を私が取得:

no matching function for call to A::max(A*&, A&) 
candidates are: int A::max(A&, A&) 

私は私が間違っているのか知ってはいけません。
ありがとうございます。 leftNoderightNodeのタイプはA*ですので

max(*(tree.leftNode), *(tree.rightNode)); 

max(*(b.rightNode), tree); 

+0

ありがとうございます。神秘的な答えは最も完全なものです –

答えて

1

あなたは私たちのすべてのタイプの宣言を示さなかったが、私はこの問題を修正します疑う:

tree.levels = 1 + max(*(tree.leftNode), *(tree.rightNode)); 
b.levels = 1 + max(*(b.rightNode), tree); 

もともと、あなたはmax関数が参照を期待するときにポインタを渡しました。したがって、あなたのエラーにつながるタイプの不一致。だから、あなたのポインタを逆参照する必要があります。

+0

それは私が目指していた完全な答えです。ありがとうございました –

1

君はmaxを呼び出す必要があります。 treeのタイプはAなので、大丈夫です。

maxのパラメータタイプをA&からA*に変更することをお勧めします。コードをもう少しきれいにするためです。

1

あなたのポインタを間接参照する必要があります。

tree.levels = 1 + max(tree.leftNode, tree.rightNode); 

あなたは、パラメータとして参照を取るメソッドへのポインタを渡ししようとしています。 Do:

tree.levels = 1 + max(*(tree.leftNode), *(tree.rightNode)); 
関連する問題