Size: a a a

2020 September 27

ЕП

Евгений Попов... in pro.cxx
Тогда самое лучшее это сидеть на диване )
источник

V

Vladimir in pro.cxx
ed braed
Господа, меня вот какой "архитектурный" вопрос волнует..
Предположим есть несколько объектов (не имеющие наследственной связи), которые должны как-то общаться между собой (например иметь ссылки друг на друга, или просто доступ к чужим данным, не суть важно).
Очевидно что в этом случае мы можем пойти как минимум 2мя путями:
1) Объявить некий публичный интерфейс к нужным данным.
2) Объявить некий приватный интерфейс и тупо начать френдить.

Оба варианта как по мне тухлые:
1 - создаёт опасность того, что этим интерфейсом воспользуется тот, кто им воспользоваться не должен.
2 - создаёт прям-таки железобетонные связи между классами, которые потом проблематично отслеживать и модерировать.
Ну и френды считаются мувитоном и признаком хреновой архитектуры, насколько я понимаю.

Собственно существует ли какая-то хитрость до которой я не догоняю, или проблема на самом деле надуманна?
Как насчёт полноценного (асинхронного?) обмена сообщениями между этими объектами? С сериализацией, диспатчингом сообщений, идентификаторами и тд?
источник

AD

Alexander Dudin in pro.cxx
Может кто сталкивался, почему то ADL не работает для классов наследников. То есть я реализовал функцию для базового класса в его пространстве имен и в его заголовочном файле. И для объектов базового класса она нормально вызывается, но для объектов дочернего класса компилятор не видит эту функцию. Это почему так может быть?
источник

ПК

Побитый Кирпич... in pro.cxx
Alexander Dudin
Может кто сталкивался, почему то ADL не работает для классов наследников. То есть я реализовал функцию для базового класса в его пространстве имен и в его заголовочном файле. И для объектов базового класса она нормально вызывается, но для объектов дочернего класса компилятор не видит эту функцию. Это почему так может быть?
А сфигали должен?
источник

AD

Alexander Dudin in pro.cxx
Побитый Кирпич
А сфигали должен?
Тут написано https://en.cppreference.com/w/cpp/language/adl что вроде как должен все базовые классы проверять
источник

ДС

Дмитрий Салов... in pro.cxx
Привет всем
источник

B

Bytearray in pro.cxx
Bytearray
Добрый вечер. Кто-нибудь пытался на новых корутинах повторить питоновые генераторы? co_yield я ещё как-то освоил, интересует возможность илдить что-то с аргументом, полученным через co_await.
иными словами - повторить вот этот питоновый код:
>>> def double_inputs():
...     while True:
...         x = yield
...         yield x * 2
...
>>> gen = double_inputs()
>>> next(gen)       # run up to the first yield
>>> gen.send(10)    # goes into 'x' variable
20
Проблема решилась на stack overflow, спасибо доброму человеку

https://gcc.godbolt.org/z/8aMjej
источник

AP

Antony Polukhin in pro.cxx
Apache DOG™
Не делатся. Там делается если вы будете юзать тонну дисциплины то у вас может быть чето получится, а нет - все гарантированно разваливается
Внезапно ни один язык программирования не заменяет разработчику мозг. Поэтому оставьте "а вот язык X супер безопасен и учить ничего не надо". Чтобы написать на чём угодно нормальную программу вам всё равно нужна тонна литературы по построению ПО, архитектуре железа, многопоточности, алгоритмам и структурам данных. А ещё вам придется прочитать несколько мегабайтов кода языка X и минимум пол года практики.
источник

M

Mind in pro.cxx
Что-то я совсем не понимаю почему этих троллей до сих пор не забанили. В правилах вроде было сказано, что это не чатик для срача между языками
источник

M

Mind in pro.cxx
Antony Polukhin
Внезапно ни один язык программирования не заменяет разработчику мозг. Поэтому оставьте "а вот язык X супер безопасен и учить ничего не надо". Чтобы написать на чём угодно нормальную программу вам всё равно нужна тонна литературы по построению ПО, архитектуре железа, многопоточности, алгоритмам и структурам данных. А ещё вам придется прочитать несколько мегабайтов кода языка X и минимум пол года практики.
Да не, тут доказывают, что на расте можно безопасно писать даже не умея печатать
источник

ЕП

Евгений Попов... in pro.cxx
Antony Polukhin, солидарен. Серебрянных пуль нет
источник

ПК

Побитый Кирпич... in pro.cxx
Mind
Что-то я совсем не понимаю почему этих троллей до сих пор не забанили. В правилах вроде было сказано, что это не чатик для срача между языками
Тогда было бы скучно
источник

AP

Antony Polukhin in pro.cxx
Mind
Да не, тут доказывают, что на расте можно безопасно писать даже не умея печатать
"Умею печатать со скоростью 60000 знаков в минуту, но такая чушь получается" ?
источник

M

Mind in pro.cxx
Antony Polukhin
"Умею печатать со скоростью 60000 знаков в минуту, но такая чушь получается" ?
Зато безопасно. Если код не запускается, то в нём нет уязвимостей
источник

ЕП

Евгений Попов... in pro.cxx
И вообще. Аналогию можно?
источник

AG

Alexander Galagutski... in pro.cxx
Mind
Зато безопасно. Если код не запускается, то в нём нет уязвимостей
но если запускается это не гарантирует его безопасность
источник

ЕП

Евгений Попов... in pro.cxx
Профессиональные повара используют острые ножи
источник

ЕП

Евгений Попов... in pro.cxx
Иначе вон
источник

M

Mind in pro.cxx
Побитый Кирпич
Тогда было бы скучно
Да как будто ними весело. Одно и то же нытьё раз за разом, и жалобы, что в плюсах до сих пор нет любимого js фреймворка, а компилятор не варит кофе
источник

AP

Antony Polukhin in pro.cxx
Илья Шишков
Привет! Я с помощью std:: ostringstream формирую строку в несколько сотен мегабайт. До С++20 я не могу переместить из потока эту строку - мне приходится её копировать, вызывая метод str. А как я могу всё-таки избежать копирования сформированной строчки?
В boost::lexical_cast был сделан такой поток, с доступом к внутренностям: https://github.com/boostorg/lexical_cast/blob/develop/include/boost/detail/basic_pointerbuf.hpp

Только там жесть и кишки. Лучше fmt::format или сразу в строку всё пихать руками
источник