|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Статический класс25.04.2024, 04:02. Показов 10194. Ответов 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
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||
| 10.05.2024, 15:02 | |||
|
В C++ есть два вида инициализации статических переменных: статическая инициализация и динамическая. B::var1 = A::var1; - это динамическая инициализация.A::var1 = 3; - это статическая инициализация.Статическая инициализация, всегда, гарантированно выполняется раньше. Поэтому B::var1 будет равна 3. Соответствующий текст стандарта C++:
1
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 10.05.2024, 15:03 | |
|
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 11.05.2024, 02:21 [ТС] | |
|
0
|
|
|
Вездепух
12944 / 6811 / 1821
Регистрация: 18.10.2014
Сообщений: 17,236
|
||
| 11.05.2024, 02:29 | ||
|
Вы зачем-то напридумывали, что есть разница в использовании этих переменных за пределами функций или внутри функций. Это оказалось неправдой, никакой разницы нет. Вы зачем-то напридумывали, что код компилируется. Это оказалось неправдой, код не компилируется. Undefined reference. Вы зачем-то напридумывали, что B::var1 у вас равно 0. Это оказалось неправдой, к вас, как и у всех, B::var1 у вас равно 3.Так откуда и зачем вы накопали этот ворох выдумок и вывалили их сюда? Откуда вы это все взяли?
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 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
|
|||||||||
|
Вездепух
12944 / 6811 / 1821
Регистрация: 18.10.2014
Сообщений: 17,236
|
|||
| 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
|
|
|
Вездепух
12944 / 6811 / 1821
Регистрация: 18.10.2014
Сообщений: 17,236
|
|||||||||||
| 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
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 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 | |
|
Помогаю со студенческими работами здесь
120
Не могу вызвать простой статический класс Статический полиморфизм. Базовый класс «прямоугольник» Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> создать статический массив строк как статический массив указателей на строки, задание ниже --> Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|