-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
|
1 | |
Пишу свою библиотеку C++04.04.2023, 20:22. Показов 7161. Ответов 122
Метки нет (Все метки)
Приветствую!
Кто хочет поучится программированию на C++ за одно написать нужные классы и функции для будущих своих разработок, предлагаю присоединиться к разработке своей библиотеки C++. Зачем я это делаю? Кто-то скажет есть же уже готовые библиотеки, зачем изобретать велосипед и тд. Во-первых в существующих много лишнего чем вы никогда не воспользуетесь и нужно их изучать подстраиваться под их синтаксисы и тд. проблемы при отладке т.к. не знаете как что работает и тп. Во-вторых в своих знаешь, что и как работает, при необходимости можно доработать, написаны только самые основные нужные функции и классы с удобным для себя синтаксисом. В-третьих при создании своей библиотеки вы изучаете нативные функции и возможности самого языка программирования и на примерах пишите по своему, тестируете и оттачиваете свои мастерство и знания, которые в последствии вам помогут при создании своих будущих проектов. В перспективе я планирую написать с помощью своей библиотеки базу данных, язык программирования, веб-сервер. Ещё есть мысль с применением графической библиотеки wxWidgets(возможно другой) написать заголовочный файл для быстрого создания окон, элементов окна и др. https://github.com/arbnet/CppLibrary
1
|
04.04.2023, 20:22 | |
Ответы с готовыми решениями:
122
Создать свою библиотеку в С++ Создать свою библиотеку Разработать свою библиотеку Как создать свою библиотеку? |
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|||||||||||
09.05.2023, 18:49 | 41 | ||||||||||
если оператор new используется с
[] , то оператор delete тоже должен быть с нимиДобавлено через 1 минуту то есть
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
|||||||||||
09.05.2023, 19:03 [ТС] | 42 | ||||||||||
Я об этом знаю. У меня там всё запутанно... Я делаю класс ANY для разных типов. Класс ANY наследуется от LINK. В линке хранится указатель, размер переменной\объекта, и id c типом(строковое представление) которые я назначил через макрос ID_TYPE.
Хочу сделать так чтобы в ANY можно было присвоить "константную строку". Присвоение работает. Но когда я присваиваю другое значение, то указатель на прежнее значение должно удалится, но возникает ошибка. Перепробовал уже по всякому. В методе Clear() switch -> case 14:
0
|
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|
09.05.2023, 19:10 | 43 |
pgb, указатель, полученный от литерала, нельзя удалять. Просто замени на новый
Добавлено через 1 минуту в итоге - каст к указателю на указатель. Это точно так задумывалось?
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
|||||||||||
09.05.2023, 20:15 [ТС] | 44 | ||||||||||
Если бы это было так просто. Но у меня же не просто в main это выполняется.. А когда происходит присвоение к объекту ANY
Если делаю ссылкой
Добавлено через 1 минуту Хотелось бы, но так не работает. т.к. в операторе создаётся временный объект и если я запоминаю на него ссылку, то потом там строки уже нет Добавлено через 41 минуту Проблему решил, двигаюсь дальше.
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
||||||
10.05.2023, 20:31 [ТС] | 45 | |||||
Непонятная ошибка. Тестирую класс ANY в котором добавлен operator++. Объекту ANY присваиваем значение объекта DATETIME, затем увеличиваем через ++. Возникает ошибка удаления ссылки на объект DATETIME в деструкторе.
Я так понимаю создаётся несколько объектов, один удаляется нормально, а второй уже удалить не может. Пока не могу отловить конкретную причину. Тестовый код
С инкрементом DATETIME разобрался. Сделал ещё описание типов.
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
||||||
11.05.2023, 19:09 [ТС] | 46 | |||||
Добрался до ассоциативного массива _array.hpp Associative
Тест
0
|
12.05.2023, 08:37 | 47 |
pgb, вы вроде считаете себя опытным, а вопросы про ошибки ставите как чайник.
В чем выражается ошибка? Что в консоли? PS ваша либа без правок не будет компилироваться у всех. _itoa в стандартных плюсах не определена. Почему не std::to_string?
0
|
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|
12.05.2023, 08:41 | 48 |
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
|
12.05.2023, 09:00 [ТС] | 49 |
В C++ я именно чайник. В прошлом году за пару месяцев написал несколько файлов для библиотеки. Сейчас вот практически полностью всё переделал, человек с форума тут хотел со мной заниматься, я стал вспоминать объяснять ему что и как для чего делаю и тд. Холодно как-то отнёсся не выходил на связь, я его удалил из контактов и продолжил один. Доделаю массивы, перейду на доработку фреймворка, контрольной панели, потом постепенно буду дописывать библиотеку, работу с файлами, сетью и тд.
Потому что я уже намучился с использованием стандартных\готовых решений на Pascal(Lazarus), бывают моменты когда нужно что-то поменять, но ты не можешь в готовых решениях ничего изменить и сделать так как нужно, заходишь в тупик и дальше уже не сдвинешься. Так я забросил несколько проектов из-за работы с сетью, криптошифрования и др. Поэтому сейчас стараюсь делать всё исключительно нативно без готовых решений. Стандартный String мне не подходит для реализации будущих проектов. Везде писать std:: или как прикажете избавится-то? К тому же в самой библиотеке на глобальном уровне я using namespace std; не использую только в пространстве имён i интерфейса, пока его не доделал, поэтому в тестовых примерах использую.
0
|
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|
12.05.2023, 09:02 | 50 |
да, это намного корректнее. Или локально в функции вкидывать неймспейс. Но никак не в глобалку
0
|
12.05.2023, 09:07 | 51 |
Тут не важен язык. Это относится к любому ЯП. Возникла ошибка и решил спросить совета у сообщества: опиши ошибку, покажи ее текст. и т.д.
И по этому вы взяли не стандартное? Смешно же. Тогда вообще не пользуйтесь этим ЯП. Просто на пустом месте вы теряете кроссплатформенность. Т.е. если "нативно" то как раз _itoa - нарушает это ваше правило. Внезапно, но да... На больших проектах спасает от проблем. Можно писать всегда std:: не так уж и "длинно". Либо, если очень хочется, объявлять в рамках одной функции.
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
|
12.05.2023, 09:18 [ТС] | 52 |
Если знаете как нативно реализовать эту функцию с радостью заменю. Я вот на данный момент не знаю как это сделать, поэтому и использую, и не только _itoa некоторые другие тоже использую, но по большому счёту всё стараюсь писать нативно.
Добавлено через 4 минуты Я уже выше сказал, что глобально в самой библиотеке не использую, только в тестовых примерах. При выводе cout в friend пишу std:: так что не надо мне тут втирать что это необходимость..
0
|
542 / 447 / 95
Регистрация: 05.08.2022
Сообщений: 2,437
|
|
12.05.2023, 09:25 | 53 |
Добавлено через 58 секунд
0
|
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|
12.05.2023, 09:28 | 54 |
с 17-го стандарта появилась такие функции в заголовке
<charconv> std::from_chars std::to_chars не очень удобные, как по мне, но заявлены очень быстрыми
0
|
-258 / 20 / 0
Регистрация: 22.09.2015
Сообщений: 1,056
|
|
12.05.2023, 09:34 [ТС] | 55 |
Как таковой ошибки нет, всё компилируется и работает. Дело в некоторой недоработке, где-то что-то опущу, что-то не предусмотрю и тд. Всё тестирую и бывают казусы, что должно работать так, не работает как надо, и это нужно смотреть в дебагере и тд. Если вы не разрабатывали ничего серьёзного то вам этого не понять просто..
Добавлено через 4 минуты Ссылочку где написано, плиз. Или не трепите язычком..
0
|
542 / 447 / 95
Регистрация: 05.08.2022
Сообщений: 2,437
|
|
12.05.2023, 09:36 | 56 |
Не по теме: На мой взгляд это вообще смешно, что в языке не было стандартных функций для операций, которые постоянно всем нужны. Велосипедов нагорожено разной степени проблемности - неимоверное количество. Вообще С++ на мой взгляд последние несколько лет внезапно развивается в очень здравом направлении; если ограничивать себя в подмножестве используемых конструкций - то практически бейсик (в хорошем смысле) получится, только быстрый. (бейсик это так, по старой памяти; что там сейчас бизнес-программист фрейндли?). Добавлено через 1 минуту Не грубите незнакомым людям, разное случается.
0
|
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|
12.05.2023, 09:44 | 57 |
KSergey9, возможно, пытаются порог вхождения снизить. Но скорее - просто стараются не сломать старое, добавляя более удобное новое
А я и std::to_string не стесняюсь пользоваться. И std::stringstream. А упомянуте две функции - это для случаев, где скорость и память критически важны
0
|
12.05.2023, 10:06 | 58 |
вы спросили - я ответил. В чем проблема?
Добавлено через 15 минут И вновь вы на рельсы эти дебильные "вам не понять...." Вы пишите не в болге, где рассчитано на то что автор просто делится своими переживаниями, а на форуме, где автор обычно ищет помощь в решении своей проблемы. Как в таком контексте можно было понять эту фразу? Ну, а либу ясновидения я забыл подключить (подозреваю как и многие здесь)
0
|
542 / 447 / 95
Регистрация: 05.08.2022
Сообщений: 2,437
|
||||||
12.05.2023, 10:30 | 59 | |||||
Я бы другую формулировку применил вместо этой уничижительной "порог вхождения".
Банально хотят сделать язык приспособленным к существенно большему кругу задач. Гонять байтики изначально было очень клёво на Си (и плюсах). Но когда ты пытаешься использовать в клиентских бизнес-задачах, то внезапно выясняется, что библиотека неимоверно скудна на повседневно нужные там операции. Хуже того, ты ты всё равно вынужден постоянно очень внимательно следить за байтиками, хотя задача вообще про друое. По-началу стали втаскивать функциональщину, красноглазики писали кипятком. Но, по счастью, в комитете, очевидно, появились люди, которые быстро смекнули, что красноглазики они прикольные конечно, но только в своей незаметно узкой прослойке и, главное, это история вообще не про деньги. И тогда в 14 и 17 стандарты стали подвозить много именно бизнес-фич, и к 20 это только набирает обороты, что меня очень радует. Разумеется, для красноглазиков тоже очень много чего подвозят, без них в общем-то тоже никак нам не жить на самом деле, симбиоз это хорошо. PS Особенно меня умиляет история длинною в несколько десятилетий(!!), когда наконец-то в контейнеры подвезли contains() И длина этой истории - это очень яркий признак засилия красноглазиков. Я лично не раз с такими общался лично на протяжении буквально не одного десятилетия (ну ок, двух), которые совершенно искренне не могли понять в чем проблема вот такого кода, которого было весьма существенное количество
0
|
фрилансер
5799 / 5309 / 1092
Регистрация: 11.10.2019
Сообщений: 14,182
|
|
12.05.2023, 11:00 | 60 |
а я могу понять - они занимались тем, что сложнее добавить, а на такие "мелочи" временно не обращали внимания Сам так часто поступаю
0
|
12.05.2023, 11:00 | |
12.05.2023, 11:00 | |
Помогаю со студенческими работами здесь
60
Как создать свою библиотеку Как правильно подключить свою библиотеку? Как написать свою библиотеку функций? Как добавить свою библиотеку в стандартные С++ Как создать свою библиотеку функций? Как подключить свою библиотеку, написанную на ассемблере? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |