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

ポインタ型オブジェクトの演算子をオーバーロードすることはできません。

オペランドの少なくとも1つがクラス型または列挙型である場合にのみ、オペレータをオーバーロードすることができます。

オーバーロードされた代入演算子は、非静的なメンバー関数として実装する必要があるため、左側のオペランドがクラス型である場合にのみオーバーロードすることができます。

+0

私はすでにmyClassポインタを持っていますが、そのために20個のコピーを取っています(同じアドレスを指していない)。任意のアイデアが歓迎された。 –

+2

@ITion:おそらく、ポインタが 'MyClass'型のオブジェクトを指しています。あなたはそのポインタの逆参照を考えましたか? –

+0

yupeee dereferencingによって動作します...ありがとう –

関連する問題