我正在开发一个包含多个类的 Java 项目。一类有main方法,一类是最大堆数据结构,第三类是要存放在最大堆中的对象的包装类。
在包装类中,我定义了以下方法:
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;
}
在我在上述方法中指出的那一行,我收到错误“对于 CompEq 类型的方法 setHeapLoc(int) 未定义”
同时,在主要方法中,如果我说:
CompEq temp = new CompEq(eq);
temp.setHeapLoc(1);
它完美地工作。
任何人都知道可能导致这种情况的原因是什么?
编辑:铸造没有帮助。将其更改为
Heap[current].setHeapLoc(current);
添加错误“从 CompEq 到 CompEq 的不必要转换”。