|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Статический класс25.04.2024, 04:02. Показов 10754. Ответов 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
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 10.05.2024, 15:02 | |||
|
В C++ есть два вида инициализации статических переменных: статическая инициализация и динамическая. B::var1 = A::var1; - это динамическая инициализация.A::var1 = 3; - это статическая инициализация.Статическая инициализация, всегда, гарантированно выполняется раньше. Поэтому B::var1 будет равна 3. Соответствующий текст стандарта C++:
1
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 10.05.2024, 15:03 | |
|
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 11.05.2024, 02:21 [ТС] | |
|
0
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 11.05.2024, 02:29 | ||
|
Вы зачем-то напридумывали, что есть разница в использовании этих переменных за пределами функций или внутри функций. Это оказалось неправдой, никакой разницы нет. Вы зачем-то напридумывали, что код компилируется. Это оказалось неправдой, код не компилируется. Undefined reference. Вы зачем-то напридумывали, что B::var1 у вас равно 0. Это оказалось неправдой, к вас, как и у всех, B::var1 у вас равно 3.Так откуда и зачем вы накопали этот ворох выдумок и вывалили их сюда? Откуда вы это все взяли?
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 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
|
|||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||
| 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
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||||||||||
| 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
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 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, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|