- 1
- 2
- 3
CoolIntf::GetInstance().DoSomething();
CoolIntf::GetInstance().DoSomethingElse();
CoolIntf::GetInstance().DoAnything()
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
CoolIntf::GetInstance().DoSomething();
CoolIntf::GetInstance().DoSomethingElse();
CoolIntf::GetInstance().DoAnything()
для случая когда GetInstance() не инлайнится, кто-нибудь в крестах какое решение (без ручного введения временной переменной) для такого кода придумал?
единственное что нашел это вот это: https://stackoverflow.com/a/2279253 .
потому что "with" слишком общее слово которое в ж не гуглится.
Antervis 05.08.2017 06:25 # 0
Dummy00001 05.08.2017 13:02 # 0
первый вызов нужен, но последующие хочется как то убрать.
bormand 05.08.2017 14:12 # 0
Dummy00001 05.08.2017 14:35 # 0
(1) там еще авто нету.
(2) ничего, но я хочу что бы это `p` было в какой scope загнано.
я пробовал извраты на тему `for (auto& p = Aaa::GetInst(); ; ) { /* body */'; break; }`. но там было Нное количество мелких граблей (наброски в офисе - так не вспомню).
главное: это очень мелкая проблема что бы для неё код перерасхерачивать.
Vindicar 05.08.2017 17:38 # 0
Dummy00001 05.08.2017 18:03 # 0
то что я в офисе пытался делать, набросок:
но как выяснилось, в `for()` нельзя переменные разных типов объявлять.
Vindicar 05.08.2017 20:05 # 0
Dummy00001 05.08.2017 20:14 # 0
Antervis 06.08.2017 18:41 # 0
Dummy00001 06.08.2017 18:57 # 0
с этими гну фичами ни разу н игрался - https://stackoverflow.com/questions/29117836/attribute-const-vs-attribute-pure-in-gnu-c
inho 05.08.2017 22:24 # 0
Dummy00001 05.08.2017 22:34 # 0
по не-русски?
я на просто пытался прикрутить типичный `with` других языков к крестам.
roman-kashitsyn 05.08.2017 22:11 # 0
Какой ещё деструктор, там же ссылка, тем более неконстантная.
bormand 06.08.2017 00:06 # 0
Vindicar 06.08.2017 00:17 # 0
bormand 06.08.2017 00:42 # 0
Dummy00001 06.08.2017 00:51 # 0
ЗЫ жаль что к моему текущему проекту не применимо, т.к. на референсах все. указатели всегда надо проверять и кидать ошибку если нулл.
ЗЗЫ а вот такое редиско-компилер не съедает (что с авто, что с конкретным типом):
bormand 06.08.2017 07:51 # +1
roman-kashitsyn 06.08.2017 11:49 # +1
"счастливого дебага", ага
Dummy00001 06.08.2017 14:42 # 0
в конце конечно изврат получается, но принцип интересный.
я еще попытался просто оператор сравнения перекрыть и с дамми классом сравнивать (вместо простой бул конверсии) но чего то мой гцц это отказывается в if'е переваривать (`(auto& x = WithHelper(Aaa::GetInstance())) == WithCompareDummy()`).
roman-kashitsyn 06.08.2017 17:02 # +2
Dummy00001 06.08.2017 23:41 # 0
что есть весьма обидно, потому что много фич как раз для встроенщины полезны (энумы, конст-экспр).
inho 06.08.2017 23:35 # 0
Или он для обратного преобразования?
bormand 07.08.2017 17:19 # +1
roman-kashitsyn 07.08.2017 18:45 # 0
subaru 07.08.2017 18:50 # 0
roman-kashitsyn 07.08.2017 18:54 # 0
А reinterpret нужен, чтобы сказать "будем считать, что в этих байтах лежит что-то другое", без всякого подсчёта смещений.
subaru 07.08.2017 20:44 # +1
roman-kashitsyn 07.08.2017 23:13 # +2
roman-kashitsyn 06.08.2017 01:17 # +1
bormand 06.08.2017 02:05 # 0
sos 06.08.2017 02:12 # +2
subaru 06.08.2017 19:10 # +3
inho 07.08.2017 00:02 # 0
Her 05.08.2017 07:05 # +1
Dummy00001 05.08.2017 12:48 # +1
sos 05.08.2017 14:18 # +4
Dummy00001 05.08.2017 14:47 # 0
но в данном конкретном проекте там стоит проверка (и обработка) ошибки доступа к глобальным объектам до того как инициализация оного завершилась. сама проверка - один глупый if. а вот вход в обработчик фатальных ошибок - толстый.