Не нужен return ?
От: Chez Россия  
Дата: 24.09.04 07:20
Оценка:
Привет всем

Обнаружил инетерсную особенность. Компилятор VC6 не ругется на отсутствие return-ов в перегруженных операторах классов:
class A
{
    operator BOOL() {} // Ok
    int operator ->() {} // Ok
    A& operator =(const A&) {} // Ok
    
    int a() {} // Error, как и полагается
};

Почему так? Можно ли использовать это как фичу, или это всё же баг?

P.S.
Если фича, то её удобно использовать в таких ситуциях:
enum Tag {};
class A
{
    operator Tag() {} // чтобы Return не вырисовывать каждый раз...
};

BOOL IsTagged(...) { return FALSE; }
BOOL IsTagged(Tag) { return TRUE; }

// IsTagged(A()) == TRUE, для др. - FALSE

Только нужно быть уверенным, что оно всегда будет компилироваться
Chez, ICQ# 161095094
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.