Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > зачем используется struct dummy


Автор: KIDD 30.5.2008, 13:11
Товарищи,

помогите понять смысл кусочка кода:

1) зачем объявляется структура dummy
2) когда вызывается operator safe_bool

Хочется понять глобальный смысл...понятно что это какая то подстраховка, на случай, если у нас что-то произойдет со структурой...но вот что????

спасибо!

Код

struct cube
{
private:
    struct dummy {void notnull() {};};
    typedef void (dummy::*safe_bool)();
public:

int a;

cube():a()
{
}

operator safe_bool () const    {return (0 == a) ? 0 : &dummy::notnull;}

}

Автор: Alek86 30.5.2008, 13:20
если инглиш понимаешь, то тут понятнее
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Safe_bool

в двух словах
для того, чтобы если у тебя есть класс, у которого есть только оператор для неявного преобразования в бул (чтобы в if удобно писать было), то для него неявно "определяются" всякие операции типа сложения, сравнения и т.п (поскольку они определены для bool), что чревато ошибками. потому сделали спецальный safe_bool, для которого такие операции не определены

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)