2012-01-09 1 views
0

テンプレート化されたクラスの中で、式が見つかりました*this = NULLこのような式は何を意味していますか? m_pPtrはテンプレートクラスでTYPE*を入力している* this = NULLは、テンプレート化されたクラスのメソッド内で何を意味しますか?

TYPE** getPtr() 
{ 
*this = NULL; 
return &m_pPtr; 
} 

以下がその定義です。

代入演算子:

// Assignment operator. 
TYPE* operator =(TYPE *pPtr) { 
    if (pPtr == m_pPtr) 
    return pPtr; 

    m_pPtr = pPtr; 

    return m_pPtr; 
} 

ヴィシュヌ。

答えて

2

実際のコードを見ずにこのようなステートメントのポイントが何であるかは言うまでもありません。

しかし、おそらく、オーバーロードされた代入演算子を呼び出すことになります。例:

#include <iostream> 

class X { 
public: 
    void operator=(void *) { 
     std::cout << "Here!\n"; 
    } 

    void foo() { 
     *this = NULL; 
    } 
}; 


int main() { 
    X x; 
    x.foo(); 
} 
+0

実際のコード –

+0

@VishnuPedireddiで編集:それは理由が何であるかを把握するのに十分なコードではありません。特に、代入演算子( 'operator =')とコンストラクタの定義、そしてこのクラスが実際に何であるかの考えを見る必要があります。 –

+0

コード –

0

現在のオブジェクトに0を割り当てようとしています。それは(私の知る限り)

operator=(void *); 

もう一つの可能​​性のようなものを呼び出すvoid*または類似の型を取るオブジェクト内のコンストラクタがあることがあるだろう。次に、オブジェクトを作成し、それをコピー・アロケートします。

T :: T(void *); // construct with the void * 
T :: T(const T &); // copy assignment 
関連する問題