我意识到这可能是一个过于局部化的问题,但我是指针的新手,如果我做错了,这可能对其他人有帮助。
对于一个项目,我们正在创建一个OrdListClass
,它来自我教授创建的ListClass
对象。 ListClass
是一个目标文件,所以我没有它的来源。
到目前为止,我对这个项目做得很好,但是在处理Operator==
时遇到了这个问题。
我使用myList == yourList
来呼叫运营商。
我的逻辑是使用他在ListClass
GetListPtr()
中为当前应用对象提供的方法,以及我们将其与rtOp
进行比较的对象。
但是,使用时
ItemType* currPosPtr = GetListPtr(); //this class' List Pointer
和
ItemType* rtOpPosPtr = rtOp.GetListPtr(); //rtOp object's list pointer
他们返回相同的指针地址?
我不确定这是我的错,还是我的目标文件中的错误。
bool OrdListClass::operator== (const OrdListClass& rtOp) const
{
ItemType* currPosPtr = GetListPtr(); //this class' List Pointer
ItemType* rtOpPosPtr = rtOp.GetListPtr(); //rtOp object's list pointer
if (GetLength() == rtOp.GetLength()){ //If the lengths are equal
/*** DO KEY COMPARISONS HERE ***/
}else{ //Lengths are unequal
return false; //List can't contain the same items
}//End lengths if
return true; //All items were compared, all keys match
}//End Operator ==
答案 0 :(得分:2)
一种可能的解释是*this
和rtOp
是同一个对象。
另一个是它们是两个不同的对象,但共享相同的列表指针(你似乎暗示这不应该是这种情况,但不是说为什么)。
答案 1 :(得分:0)
另一个选择是你没有源代码的实现,它有一个静态列表,所以对所有实例都是一样的。这可能是您为两个不同对象获取相同地址的原因