[英]Method returning the same pointer address?
我意识到这可能是一个过于本地化的问题,但是我对指针并不陌生,如果我做错了什么,这可能会对其他人有所帮助。
对于一个项目,我们正在创建一个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 ==
一种可能的解释是*this
和rtOp
是同一对象。
另一个是它们是两个不同的对象,但是共享相同的列表指针(您似乎在暗示情况并非如此,但并未说明原因)。
另一个选择是您没有源代码的实现,它具有静态列表,因此所有实例都相同。 这可能是您为两个不同的对象获得相同地址的原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.