Explicit initialization
От: Were  
Дата: 17.06.08 13:37
Оценка:
Есть некий класс:

class ExplicitTest
{
    int m_a;
public:
    explicit ExplicitTest( int a ) :
        m_a( a ) {}
    ExplicitTest( const ExplicitTest &obj ) :
        m_a( obj.m_a ) {}
    virtual ~ExplicitTest() {}
};


Как сделать, чтобы явной считалась и инициализация с помощью знака равно(=)?
Примерно так:
ExplicitTest TestObj1(0);                      // OK
ExplicitTest TestObj1 = ExplicitTest(0);       // OK
ExplicitTest *pTestObj = new ExplicitTest(0);  // OK
ExplicitTest TestObj2 = 0;                     // Want to be OK

void Function( const ExplicitTest &obj);

Function( 0 ); // Error


Я конечно понимаю, что там создается временный объект, но компилятор ведь все равно это оптимизирует ) Вообщем хочется запретить создавать неявно временные объекты и разрешить все остальное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.