2012-01-09 1 views
0

Внутри шаблонного класса я нашел выражение, *this = NULL Что такое выражение?Что означают * this = NULL внутри метода в шаблоном классе?

следующее его определение:

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

где m_pPtr имеет тип TYPE* в классе шаблона.

Оператор присваивания:

// 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 
Смежные вопросы