|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Статический класс25.04.2024, 04:02. Показов 11441. Ответов 165
Метки нет (Все метки)
Всем привет
хочу создать полностью статический класс и создаю но возникают ошибки неопределенные reference и пр. хотелось бы сделать так
пишу в итоге так
при компиляции получаю ошибки необъявленные ссылки на var1, var2 .... undefined reference to `SomeClass::var1 вопрос как объявить статический метод класса, а в идеале и вообще весь класс, чтобы не создавать в коде его экземпляр? Добавлено через 4 минуты основная задача вынести этот статический класс в один файл то бишь в модуль не хедер + cpp а сразу все в одном как в шарпах - очень удобно это они придумали в шарпах
0
|
|||||||||||
| 25.04.2024, 04:02 | |
|
Ответы с готовыми решениями:
165
Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним Статический класс Статический член указатель на класс |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 10.05.2024, 14:48 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 10.05.2024, 15:02 | |||
|
В C++ есть два вида инициализации статических переменных: статическая инициализация и динамическая. B::var1 = A::var1; - это динамическая инициализация.A::var1 = 3; - это статическая инициализация.Статическая инициализация, всегда, гарантированно выполняется раньше. Поэтому B::var1 будет равна 3. Соответствующий текст стандарта C++:
1
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 10.05.2024, 15:03 | |
|
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 11.05.2024, 02:21 [ТС] | |
|
0
|
|
|
Вездепух
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,392
|
||
| 11.05.2024, 02:29 | ||
|
Вы зачем-то напридумывали, что есть разница в использовании этих переменных за пределами функций или внутри функций. Это оказалось неправдой, никакой разницы нет. Вы зачем-то напридумывали, что код компилируется. Это оказалось неправдой, код не компилируется. Undefined reference. Вы зачем-то напридумывали, что B::var1 у вас равно 0. Это оказалось неправдой, к вас, как и у всех, B::var1 у вас равно 3.Так откуда и зачем вы накопали этот ворох выдумок и вывалили их сюда? Откуда вы это все взяли?
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 11.05.2024, 11:20 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 09.03.2024
Сообщений: 19
|
|
| 11.05.2024, 13:17 | |
|
Как всегда завсегдатаи налетели на обычный класс и хотят сделать из него чуть ли не новый стандарт c++
Добавлено через 2 минуты Пацан который создал эту тему лучше удали её и вообще уйди с этого похабного форума, я уже проверил данный форум, написал говнокод и выложил его к себе в профиль, можешь посмотреть как я троллил там дурачков которые даже не шарят в IQ коде)
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||
| 11.05.2024, 16:13 [ТС] | |||||||||
|
а, да , действительно.
а что такое UB? сколько раз мне надо написать что код компилируется ? Добавлено через 48 секунд как здесь видео ввыложить? выложу видос на ютуб, прикреплю ссылку. или картинку. Добавлено через 5 минут минуту загрузчик на сайт как-то долго работает Добавлено через 3 минуты ой, ляяя Это BMP3 изображение имеет неверное расширение.
все прекрасно компилируется и работает.
0
|
|||||||||
|
Вездепух
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,392
|
|||
| 11.05.2024, 16:36 | |||
|
К чему вы нам теперь тут приводите какой-то совершенно другой код и рассказываете, что он у вас "компилируется"? При чем он здесь вообще? Отложите сейчас все и напишите в форум подробное объяснение по этим вопросам (на странички 2-3 будет достаточно).
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 11.05.2024, 16:55 | |||
|
Я думаю тут подходит следующее правило:
И способ и порядок инициализации статических объектов ? Если да, то укажите этот конкретный случай или грызите Штандарт (он же c++draft).
0
|
|||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 12.05.2024, 09:32 [ТС] | |
|
ntcntest
0
|
|
|
Вездепух
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,392
|
|||||||||||
| 12.05.2024, 17:51 | |||||||||||
|
Я могу подтвердить, что если исправить уж совсем грубые ошибки в коде из сообщения #95 (нарушения доступа, опечатки в именах переменных), то вот такой вариант будет компилироваться в Arduino IDE
A::var1 не определена.Причина: Arduino IDE при вызове gcc указывает флаги -flto -Os. (Похоже, что gcc нужны именно оба флага.) Именно благодаря этим флагам gcc в такой ситуации, выполнив link time optimizations, не считает переменную A::var1 "используемой" и не требует для нее определения. Этот эффект воспроизводим в gcc и за пределами Arduino IDE.Clang для воспроизведения такого поведения достаточно просто -flto--- Однако надо добавить (сразу не заметил), что переменная A::var1 при этом считается "ненужной" только потому, что переменная B::var1 в таком примере считается "ненужной".Достаточно добавить в код
A::var1.То есть исходные заявления ТС о том, что переменная B::var1 якобы получает значение 5 даже в отсутствие определения A::var1, действительности не соответствуют. "Проскочить без определения" в таком примере можно только тогда, когда обе переменных удается устранить полностью. А нет переменной - нет и значения.
1
|
|||||||||||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||||||||
| 13.05.2024, 07:37 [ТС] | ||||||||||||
|
там же ниже еще код был там даже мейн еще есть в котором собственно и производятся все операции как по мне это вообще странно ругается на то что если а разместить после Б и попытаться написать int B::var1 = A::var1 + 5; скажет класс неопредеделен но при этом допускает int B::var1 = A::var1 + 5; - хотя смысла в этом нет. исходный пример был int B::var1 = A::var1 + 5; // тут 5 int A::var1 = B::var1 + 6; // тут 11 я ж пишу код ручками, не открываю вс. в этом и был вопрос , если ты не понял. на кой ляд мне вот это вот: int B::var1 = A::var1 + 5; // тут 5 к которому я даже использовать его не могу. как оно вообще пролезло. и не будет ли лучшим вариантом инициализация в при объявлении класса в теле класса. если ты не понял вопрос, ответ на который - так сложилось исторически - то что ж я могу поделать. Добавлено через 3 минуты и тем более странным выглядит
поэтому мой пример некорректен. и забыл двоеточие , так это пост 114 давай "халауду" разведем про пост 114 Добавлено через 1 минуту про конкретный пост 114 - давай наличие абстрактного мышления - отличает
0
|
||||||||||||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 13.05.2024, 07:39 | |||
|
Ну что сказать, успехов в работе. Добавлено через 1 минуту
2
|
|||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 13.05.2024, 11:46 [ТС] | ||
|
тут вопрос не в том что почему, а вопрос для чего такое алогичное поведение может понадобиться? если уж тогда разрешать такую балалайку как инициализацию чего хотим и как хотим, тогда не вижу причин запрещать инициализацию статик внутри класса. тут вопрос концепции в целом, а не конкретной реализации. и как нам показывает компилятор ардуино с флагами гсс -о - тратата ничего страшного не происходит. вопрос то концептуальный. не стоит его переводить в плоскость синтаксиса. ответ достаточно прозаичен - исторически так сложилось. инструменты написаны так, есть куча старого кода - который надо поддерживать. всё. Добавлено через 3 минуты человек сознательно уводит тему в сторону, я это так вижу. и начинает к запятым придираться. а че там исследование открой диспетчер да посмотри какие параметр запуска.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 13.05.2024, 13:06 | |||
|
Если исследовать ЯП С++ по такому пути, не хватит и жизни. (кроме случаев на все непонятки отвечать себе : так исторически сложилось, это ответ на малую часть: почему). Но по вашему случаю, в самом простом исполнении : https://onlinegdb.com/tFz-fmtB_ ![]() Добавлено через 3 минуты p.s. pup_kin, ко всему прочему, С++ , как и все ЯП - несовершенны и имеют те или иные баги, как в архитектуре так и в реализации в виде компиляторов и библиотек. Понять где баг а где ваши заблуждения, возможно лишь изучив концепции, подходы и синтаксис ЯП, при том почти досконально. А гадать, это для гадалок-цыганок.
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 13.05.2024, 13:09 | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 13.05.2024, 13:14 | |||
|
Кликните здесь для просмотра всего текста
![]() Добавлено через 3 минуты
0
|
|||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 13.05.2024, 14:49 [ТС] | ||
|
как по мне он не должен работать. но он работает, но значит я ошибся. значит другие правила. их стоит запомнить и всё. потому что такие правила языка и на них ориентируются компиляторы. т.е. это такое допущение которое упрощает многое. иначе была бы чехорда с инклюдами файлов. т.е. с++ пошел по пути инклюдов, но видимо понял что тонет и надо как-то упростить. теперь понятно. в первом посте я вообще забыл инициализировать переменную, я вообще не думал об этом даже. вся тема решалась добавлением инициализации переменных к которым происходило обращение в методе.
0
|
||
| 13.05.2024, 14:49 | |
|
Не могу вызвать простой статический класс Статический полиморфизм. Базовый класс «прямоугольник» Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> создать статический массив строк как статический массив указателей на строки, задание ниже --> Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|