2010-11-26 5 views
0

안녕 어떻게 포인터 개체를 오버로드합니까? 나는 그것이 나던 노력했다. 누구든지 나를 도울 수 있겠 어.포인터 개체 오버플로

CMyClass *InstancePtr = new CMyClass; 
Myclassptr = MapObject->second; // returns *CMyclass 
//overlaod Assignment operator ... 
InstancePtr = Myclassptr; 

////////////////////////////////////////////////////// 

CMyClass * CMyClass::operator=(const CMyClass *ptr) 
{ 
    //some operation  
    int x = 4; 
    x = x - 2; 

    return this; 
} 

답변

1

포인터 유형 개체에 대해 연산자를 오버로드 할 수 없습니다.

적어도 하나의 피연산자가 클래스 유형 또는 열거 형인 연산자 만 오버로드 할 수 있습니다.

오버로드 된 대입 연산자는 비 정적 멤버 함수로 구현해야하므로 왼쪽 피연산자가 클래스 유형 인 경우에만 오버로드 할 수 있습니다.

+0

거기에 어떤 문제가 있습니다 .. 나는 이미 20 개의 복사본을 가져 가고 싶은 myClass 포인터를 가지고 있습니다 (동일한 주소를 가리키지 않음). 어떤 생각이라도 환영 받았다. –

+2

@ITion : 아마도 포인터가 'MyClass' 유형의 객체를 가리키고 있습니다. 포인터를 역 참조하는 것을 고려 했습니까? –

+0

yupeee 역 참조로 작동합니다 ... 감사합니다. –