Pull to refresh
118
0
Денис @nrcpp

Автор learnazure.app

Send message
По идее исключение можно вызвать. А можно просто T()
Забыли добавить, что социальные сети — средство коммуникации. Бизнес, приложения, и прочее на второом плане. Да я вообще не понимаю социальности в интернете. Он сам по себе, чтобы соединять людей. Уж какими способами — выбирать им. Соц. сети — в свою очередь от fascio «пучок, связка, объединение», упорядочивают тех, с кем можно связаться.
Ты бы прикрылся, кроме как «тролль», «баян» и так далее… что-то бы сам запостил.
Из-за таких людей не хочется писать дальше.
Я вообще из песочницы и не собирался вызывать такой резонанс, постя, между половыми актами с индусским кодом.
А что, на делфи еще пишут?))
А по сути, зачем нужно переменное число параметров макроса? Чтобы передать такой же функции.
Вот ей богу, этот язык вечен, ибо не знает его никто.
Рефлексия, фабрики, де/сериализация…
По-моему, достаточно просто заполнить map<string, T>, и добавить к этому T &operator()(string). А в конструкторе заполнить мапу известными полями. Тогда такая запись:
obj("fieldName") = value; // имеет место быть

Затратно, с экономической точки зрения. А более конкретно, С++ на практике — это рефакторинг и костыли, для уже написанного. Новый софт на плюсах с нуля? Для малого, среднего бизнеса, предприятия, стартапа? Пример пожалуйста.
Таким образом мы и имеем избыточный язык для библиотек. Я даже обобщу. Лучше если был бы С++ для библиотек, и С++ для решения задач.
Для первого — все, что ограничивает пользователя библиотеки + шаблоны. Те же спецификаторы доступа, const, абстрактные функции, explicit, friend. Для второго — NoRulesCPlusPlus. С одной оговоркой — код не падает во втором случае, от незнания библиотечных фич.
Имеется ввиду, не библиотечный код, а ваш собственный. Например, мне нужно парсить бинарный файл с секциями. У каждой секции свой формат. Но одинаковые операции: считывания и распаковки. Вот распакованная секция, подавалась шаблонному параметру ParserClass, с перегруженным operator()( char *section ). Типы элементов, к-ые парсятся, тоже разные. Поэтому и класс с распарсенными данными, на выходе.
Больше умственных усилий, чем несколько раз продублировать код чтения и распаковки.
Про такие примеры я говорю. Что у вас есть задания, вы ищите закономерность и обобщаете ее, либо вширь (шаблоны), либо вглубь (наследование). Повседневное применение
Пропустил «Приведите, если можно, пример...». Про тон — вам показалось. Это вопрос-ответ на
> Зачем все эти шаблоны шаблонов.
>>Читайте книги — источник знаний.
Ув. nrcpp Вы что действительно думаете, что делаете что-то сверхестественное и уникальное?! Присмотритесь к жизни по-лучше.

С чего такой вывод?
Если вы заметили, то описать слабые места языка, в нашем случае избыточные — было целью топика. Не «язык N — говно.»
Ну ну ну, кодю 5 лет исключительно на плюсах. НО:
— Как правило приходиться рефакторить С++ код, либо переписывать с нуля. Думаю, понятно почему создавать с нуля на плюсах — нынче затратно. (Обобщаем)
=> Рефакторю — ужасаюсь, переписываю с нуля — опять же, оглядываюсь на функционал индусского кода. Во истину, радость, когда и функционал и код мне подвластны. А так мы как раз получаем, пересел с индийского велосипеда на свою машину, а педали все равно крутить приходиться. При этом не забываем про «ПДД», читай хороший тон
что скажете на
friend
спецификаторы, улучшают инкапсуляцию. — Б. Страуструп.

То же могу сказать и про спецификаторы доступа при наследовании.
По большому счету, добрая доля плюсовых гуру-фичей, нужна при написании библиотек.
Пример повседневной задачи, где вы применяли шаблоны шаблонов.
Да что там, просто самостоятельно созданный шаблонный класс?
ООП головного мозга, не относящаяся напрямую к С++

Не-ООП вермишели от прошлого кодера обошлись потерей 30% клиентов.
FileScanner — у нас сканировал и память, и реестр, и папки, а еще глобальные настройки менял, в разных методах файла.

Тот же thread_pool из примера — отличный класс

1) Для изучения внутренностей ушло 2 дня, попутно изучил boost thread 2) Не понял, к чему эти мета-политики для такого функционала: задать константый размер пула, положить туда объект задачи (интерфейс ITask например а-ля C# 4.0), при завершении задачи, вызвать нотификатор, который обработает результат, pause/resume/stop для выполняющихся задач. => Последнее предложение, стандартными средствами не делается.
3) Подключение хэдера <boost/thread_pool>, увеличивает время компиляции в разы.

не хватает структурированности, попробуйте рефакторинг :)

Спасибо, учтем. Первый топик :)
12 ...
15

Information

Rating
Does not participate
Registered
Activity