170 похожих чатов

А если, к примеру, мы не нашли ни модель, ни

тип, и хотим вывести код об ошибке в консоль, мол ничего не найдено?

30 ответов

12 просмотров

как вариант - добавить вариант TypeInfo.WrongInput какой-нибудь

switch(result) { case TypeInfo::CarInfo: std::cout << "CarInfo"; break; case TypeInfo::CarModel: std::cout << "CarModel"; break; default: std::cout << "Error"; break; }

std::slavik
switch(result) { case TypeInfo::CarInfo: std::...

плюс enum в том что его можно использовать в switch case

https://gieseanw.wordpress.com/2018/12/29/stop-reimplementing-the-virtual-table-and-start-using-double-dispatch/

Illia Palkin
https://gieseanw.wordpress.com/2018/12/29/stop-rei...

ну на каждый чих визитор делать тоже не надо)

std::slavik
ну на каждый чих визитор делать тоже не надо)

Пусть почитает. Полезно будет. А там уже решит что ему нужно в его задачах

Illia Palkin
https://gieseanw.wordpress.com/2018/12/29/stop-rei...

а кто-то видел это на практике где-то?

Gleb Pylypets
а кто-то видел это на практике где-то?

Я видел сотни енамов и ф-й GetType() в проде) И был мягко говоря не в восторге

Illia Palkin
Я видел сотни енамов и ф-й GetType() в проде) И бы...

Особенно когда тебе нужно делать диспатчинг в больше чем 1 месте и у тебя эта сотня свит-кейсов по всей кодовой базе

Aidar Fattakhov
Ну тут так же сотня методов в визиторе

Но не сотня свитч-кейсов в каждой ф-и где приходит объект с иерархии

Aidar Fattakhov
А такого я никогда не видел

enum class AnimalType { Dog, Cat, Chicken }; struct Animal { AnimalType GetType(); }; void ProcessAnimal(const Animal& animal); void PrintAnimal(const Animal& animal); Ну приходится в каждую ф-ю которая принимает Animal тащить свитч-кейс

Illia Palkin
enum class AnimalType { Dog, Cat, Chic...

для этого существует наследование и полиморфизм

Till Schneider
для этого существует наследование и полиморфизм

Но с наследованием то же самое получится. Просто будешь касты делать. (Если не юзать дабл диспатч)

Illia Palkin
Но с наследованием то же самое получится. Просто б...

Вообще если ты пишешь функцию, которая принимает животное но хочет при этом для кота что то сделать, то это обычно означает что тут что то не так

Illia Palkin
Это абстрактный пример

Это не важно, можно хоть трипл диспатч придумать

std::slavik
ну типа не совсем

Я не помню нормальных историй где реально нужен был даункаст в функции

Denis P
Я не помню нормальных историй где реально нужен бы...

Я работал на проекте где такого навалом. И виртуальных ф-й GetType() и диспатчингов и всего самого лучшего

Illia Palkin
Я работал на проекте где такого навалом. И виртуал...

Я не говорю что таких проектов нет, я говорю что дабл диспатч для меня это попытка решение до этого руками созданной проблемы

Denis P
Я не помню нормальных историй где реально нужен бы...

ну я вот вчера использовал для такой задачи есть такой вот типа код - MCInst - базовый тип для эмиссии машинного кода - в нем по сути содержатся байты без всякой доп информации std::unique_ptr<MCInst> ins; ins = emitter.emit(*ctr); но для некоторых операций есть аппаратные ограничения которые неплохо бы проверять, они(если есть) добавляются в класс - наследник MCInst и в валидаторе мы пробуем сделать каст к этому классу - и если он получается - проверяем для него рестрикшены if (not Validator::validate(ins)) { return false; }

std::slavik
ну я вот вчера использовал для такой задачи есть ...

Почему в базовый класс не вынести функцию просто? Либо сделать базовый класс "операция с ограничениями", насладник вашего супер общего класса

std::slavik
разделение ответственности

Да, потому я думаю что операции с ограничениями это другой базовый класс

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта