-
Скажите, а что, в самом деле в Си или С++ нет готовой конструкции на подобии set of TEnum из Delphi??
Ну кроме std::bitset какого-нибудь, что-то нативное бы.
-
Нету. А зачем оно там ? Это же синтаксический сахар
-
А маски тебе для чего - тоже самое только по другому выглядит
-
Да, наверное сахар.
При переходе с Си на Дельфи помню как смеялся над этим "зачем?! вот же, есть битовые константы!"
А теперь сие видится уже откровенной ущербностью.
В самом деле: enum с автонумерацией в Cи почему-то есть, хотя это тоже сахар в таком разрезе, а set - нету.
-
а чем тебе сахара от битсета мало??
enum MyEnum
;
int main()
;
setOfEnum[TWO] = true;
printSetOfEnum();
auto setOfEnum2 = std::bitset<TREE + 1>();
setOfEnum2[ONE] = true;
setOfEnum |= setOfEnum2;
printSetOfEnum();
setOfEnum &= setOfEnum2;
printSetOfEnum();
std::string ch;
std::cin >> ch;
return 0;
}
-
Лет через 20 может добавят в стандарт, а пока мучайся :)
-
finally бы добавили.
-
> finally бы добавили.
зачем?
-
> Kilkennycat © (08.07.16 16:56) [7]
За тем же зачем и в Delphi.
-
> DayGaykin © (08.07.16 17:37) [8]
то, что делается в делфи, легко реализуется в си и без финалли.
-
> Kilkennycat © (08.07.16 17:44) [9]
Я буду только рад, если научишь.
К примеру, выключаем обработчик какого-то события:
Saved = Some.OnEvent;
Some.OnEvent = nil;
try
Code;
finally
Some.OnEvent = Saved;
end;
Класс создавать?
-
> DayGaykin © (08.07.16 17:49) [10]
не особо отличается от:
Saved = Some.OnEvent;
Some.OnEvent = nil;
try
Code;
catch ()
Some.OnEvent = Saved;
-
Пробросить исключение забыл.
А вообще если такой код нужно 100-500 раз писать, то проще RAIIобертку написать
-
> Jack128 © (08.07.16 18:39) [12]
ну, если быть принципиальным сишником, то ее надо писать, даже если такой код и надо :)
-
Напишите, пожалуйста, правильный перевод того что я написал на RAII.
-
template <typename EventType>
struct EventOffOn
~EventOffOn()
};
template <typename EventType>
EventOffOn<EventType> eventOffOn(EventType* &event) ;
пример использования:
struct Obj
};
void handler(int value)
int main()
o.CallEvent(3);
return 0;
}
-
Дичь какая. Действительно, нафига нужно finally
-
> Действительно, нафига нужно finally
естественно нафиг не нужен.
delphi:
var
OldValue: TEventType;
OldValue := Obj.Event;
Obj.Event := null;
try
finally
Obj.Event := nil;
end;
c++
-
delphi:
var
OldValue: TEventType;
OldValue := Obj.Event;
Obj.Event := nil;
try
finally
Obj.Event := nil;
end;
c++
-
Последняя попытка
delphi:
var
OldValue: TEventType;
OldValue := Obj.Event;
Obj.Event := nil;
try
finally
Obj.Event := OldValue;
end;
c++