繁体   English   中英

方法返回相同的指针地址?

[英]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 ==

指针地址-在Visual Studio 2010的监视窗口中查看

一种可能的解释是*thisrtOp是同一对象。

另一个是它们是两个不同的对象,但是共享相同的列表指针(您似乎在暗示情况并非如此,但并未说明原因)。

另一个选择是您没有源代码的实现,它具有静态列表,因此所有实例都相同。 这可能是您为两个不同的对象获得相同地址的原因

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM