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

时间:2013-03-15 21:17:13

标签: c++ pointers

我意识到这可能是一个过于局部化的问题,但我是指针的新手,如果我做错了,这可能对其他人有帮助。

对于一个项目,我们正在创建一个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 ==

Pointer addresses - as viewed in the watch window in Visual Studio 2010

2 个答案:

答案 0 :(得分:2)

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

另一个是它们是两个不同的对象,但共享相同的列表指针(你似乎暗示这不应该是这种情况,但不是说为什么)。

答案 1 :(得分:0)

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