1

我意识到这可能是一个过于本地化的问题,但我是新手,如果我做错了什么,这可能会帮助其他人。

对于一个项目,我们正在创建一个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 的监视窗口中查看

4

2 回答 2

2

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

另一个是它们是两个不同的对象,但共享相同的列表指针(您似乎暗示这不应该是这种情况,但没有说明原因)。

于 2013-03-15T21:19:22.973 回答
0

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

于 2013-03-15T21:22:24.783 回答