2013-03-15 4 views
1

나는 이것이 너무 지역화 된 질문 일 수 있다는 것을 알고 있지만, 나는 포인터에 익숙하지 않다. 그리고 이것은 내가 잘못된 것을하고 있다면 다른 사람들에게 도움이 될 수있다.동일한 포인터 주소를 반환하는 메서드?

프로젝트의 경우 교수님이 만든 ListClass 개체에서 파생 된 OrdListClass을 생성합니다. ListClass은 오브젝트 파일이므로 소스가 없습니다.

지금까지, 나는 Operator==를 처리 할 때 그러나 나는이 난관에 충돌, 프로젝트 ver을 잘 해왔습니다.

저는 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

+0

두 객체를 생성하고 평등을 검사하는 코드를 볼 수 있습니까? – JBentley

답변

2

한 가지 가능한 설명은 *thisrtOp이 같은 객체이다.

또 다른

은 두 가지 목적이 있지만, 동일한 목록 포인터를 공유 (이 사건을 안 것을 의미하는 것 같다,하지만 왜 말을하지 않음)이다.

+0

이전에 테스트 클라이언트에서'yourList = myList'를 사용했습니다. 내'Operator ='메서드에서 실수로'yourList'' myList'의 목록 포인터를주었습니다. 이것을 지적 해 주셔서 고맙습니다. –

0

또 다른 옵션은 당신이 구현되지 소스 코드, 그것이 정적리스트가 있으므로 모든 인스턴스에 대해 동일합니다. 이것은 두 개의 다른 객체에 대해 동일한 주소를 얻는 이유 일 수 있습니다.

관련 문제