複数のクラスを持つJavaプロジェクトに取り組んでいます。1 つのクラスにはメイン メソッドがあり、1 つのクラスは最大ヒープ データ構造であり、3 つ目は最大ヒープに格納されるオブジェクトのラッパー クラスです。
ラッパー クラスでは、次のメソッドを定義します。
public void setHeapLoc(int l)
{
heapLoc = l;
}
最大ヒープ クラスには、次のコードがあります。
public int insert(CompEq comp) {
assert s < size : "No room";
int current = size++;
Heap[current] = comp;
while ((current != 0) && (Heap[current].compareTo(Heap[parent(current)]) > 0)) {
swap(Heap, current, parent(current));
current = parent(current);
}
Heap[current].setHeapLoc(current); //<-------This line is the problem
return curr;
}
上記のメソッドで指摘した行で、「メソッド setHeapLoc(int) は CompEq 型に対して未定義です」というエラーが表示されます。
一方、メイン メソッドでは、次のように言います。
CompEq temp = new CompEq(eq);
temp.setHeapLoc(1);
それは完全に機能します。
誰がこれを引き起こしているのか考えていますか?
編集: キャストは役に立ちません。それをに変更する
Heap[current].setHeapLoc(current);
エラー「CompEq から CompEq への不必要なキャスト」を追加します。