В общем ситуация такая: у вас есть цикл с кодом который анализирует диапазон значений или список энтитей скажем. Это может быть даже и не цикл а какой-нибудь while (true) в котором творится всё что угодно. Суть в том что этот участок кода можно покинуть либо в результате неудачи (бегунок вышел за верхнюю или нижнюю границу) либо в результате удачи, когда мы нашли то что искали. Но как передать этот контекст при выходе из цикла? По удаче или по неудаче мы вышли?
Ноль я зачастую не могу использовать в качестве флага ошибки потому что для сенсора в пространстве, ноль это легитимное значение. Я конечно могу при неудаче записать в исходящую переменную -99999 или NaN (как я делал в враде) и потом чекнуть, или вообще сделать булевую переменную-флаг (как я тоже делал в враде) но может есть более элегантные пути?
Crystallize писал: бегунок вышел за верхнюю или нижнюю границу
Кто вышел?
Цитата:
Crystallize писал: конечно могу при неудаче записать в исходящую переменную -99999 или NaN (как я делал в враде) и потом чекнуть, или вообще сделать булевую переменную-флаг (как я тоже делал в враде) но может есть более элегантные пути?
std::cout << "Failure: Out of bounds (" << result.x << ", " << result.y << ")\n";
38
} else {
39
std::cout << "Failure: Invalid data\n";
40
}
41
}
42
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Crystallize писал:
Ноль я зачастую не могу использовать в качестве флага ошибки потому что для сенсора в пространстве, ноль это легитимное значение. Я конечно могу при неудаче записать в исходящую переменную -99999 или NaN (как я делал в враде) и потом чекнуть, или вообще сделать булевую переменную-флаг (как я тоже делал в враде) но может есть более элегантные пути?
Буквально для этого существует std::optional. Ну ты можешь свой аналог на шаблонах очень легко написать, если нет желания или возможности тянуть STL свежий. Либо же, если тебе где-то на уровнях выше тебе прямо конкретно нужно знать, что за ошибка произошла, то смотри в сторону std::expected (увы, он есть только начиная с C++23, так что тут придётся ручками аналог делать)
Дядя Миша писал: а потом мы удивляемся чего программы тормозят и столько места занимают.
Это абсолютно то же самое, что отдельно иметь переменную и булевый флажок под индикацию того, установлено там значение или нет, отличие лишь в более удобном интерфейсе и меньшем количестве кода соответственно. Итоговый размер объекта это sizeof(T) + sizeof(bool)
Дядя Миша писал: SNMetamorph сперва потянем весь STL, потом Boost, потом миллион чужих библиотек и всё. Начинают-то с лёгких наркотиков.
Ты же вроде сам хочешь винформы в ксаш тянуть убивая кроссплатформенность Да и чем stl то не угодил?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Ты же вроде сам хочешь винформы в ксаш тянуть убивая кроссплатформенность
Так это только для редактора. Редакторы исторически только под винду делаются. Ну впрочем, через WINE-то всё прекрасно работает, так что какая разница.
Добавлено 27-12-2024 в 09:38:
Цитата:
SNMetamorph писал: Свой optional/expected с нуля на коленке пишется в 40-50 строчек.
Во-во, я и говорю, для разруливания простейшей ситуации - шаблон на 40 строк, зашибись.
Дядя Миша писал: Редакторы исторически только под винду делаются.
Ну может разве что во времена динозавров.
Цитата:
Дядя Миша писал: Ну впрочем, через WINE-то всё прекрасно работает, так что какая разница.
Особенно со сложными сценами в 1фпс . Ну вайн так вайн.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!