|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Статический класс25.04.2024, 04:02. Показов 11095. Ответов 165
Метки нет (Все метки)
Всем привет
хочу создать полностью статический класс и создаю но возникают ошибки неопределенные reference и пр. хотелось бы сделать так
пишу в итоге так
при компиляции получаю ошибки необъявленные ссылки на var1, var2 .... undefined reference to `SomeClass::var1 вопрос как объявить статический метод класса, а в идеале и вообще весь класс, чтобы не создавать в коде его экземпляр? Добавлено через 4 минуты основная задача вынести этот статический класс в один файл то бишь в модуль не хедер + cpp а сразу все в одном как в шарпах - очень удобно это они придумали в шарпах
0
|
|||||||||||
| 25.04.2024, 04:02 | |
|
Ответы с готовыми решениями:
165
Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним Статический класс Статический член указатель на класс |
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
|
| 13.05.2024, 14:52 | |
|
1
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||
| 13.05.2024, 15:03 [ТС] | |||
|
но сейчас возникает куча вопросов по реализации стандарта
"Variables with static storage duration (3.7.1) or thread storage duration (3.7.2) shall be zero-initialized (8.5) before any other initialization takes place." это же для компилятора указание? программист же не будет сначала устанавливать в ноль , а потом в другое значение. он сразу полагает что там ноль, и ставит другое значение, но тогда вопрос - почему нельзя оставить ноль и не требовать динамической инициализации. Together, zero-initialization and constant initialization are called static initialization; all other initialization is dynamic initialization. Static initialization shall be performed before any dynamic initialization takes place. <...> почему нельзя было сделать нулевую - как они сделали, и сразу ее в константную. ну просто так получилось Добавлено через 2 минуты почему бы не пойти дальше и не упростить жизнь, добавив еще одну инициализацию по умолчанию. какой мне хрен с этой нулевой инициализации - если undefined reference. Т.е. просто так написано, исторически. можно академически развести демагогию, но понимать здесь нечего - реализовано как реализовано. я напрмиемр не вижу проблем чтобы сразу дать значение по умолчанию и не требовать явной или какой-то там динамической инициализации. Добавлено через 2 минуты )))вот в чем казус то )и обращался к ней в методе, не инициализировав дополнительно вручную. Добавлено через 2 минуты потому что это логично - она на то и статическая чтобы быть инициализированной сразу. в этом её и суть. но оказалось всё круче, оказалось можно одну статику инициализировать другой статикой. чего невозможно было бы реализовать если разрешить инициализировать статику внутри объявления класса. может именно поэтому
0
|
|||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
||
| 13.05.2024, 15:03 | ||
![]() короче, едем по кругу, я чувствую
0
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||||||||
| 13.05.2024, 15:09 [ТС] | ||||||||||||
|
а где в
определения здесь нет, но вы пишете что переменная статическая всегда имеет инициализацию? вопрос где в коде
Добавлено через 56 секунд она ее здесь не имеет - потому что это объявление значит не всегда. но согласно стандарту - она ее будет иметь при компиляции в значение по умолчанию. но сейчас она ее не имеет
0
|
||||||||||||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
||
| 13.05.2024, 15:10 | ||
|
pup_kin, смотри.
1) в коде могут быть объявления. Сколько угодно. Компилятору фиолетово.Если этими объектами никто не воспользовался, то ничего страшного не произошло. Наверное, даже линкер их проигнорирует (на данном этапе инициализации ещё не может быть, поскольку объекты только "на бумажке") 2) в коде могут быть определения или объявления сразу с определениями(тут для статических объектов нулевая принудительная инициализация либо указанная программистом. Для остальных объектов может не быть инициализации)
0
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 13.05.2024, 15:11 [ТС] | ||
|
я так понял, вся этат баблалайцйка со статикой началась для того, чтобы можно было инициализировать одну статику другой статикой не особо заморачиваясь на порядок инклюдов.
Добавлено через 49 секунд и инициализации здесь нет значит не всегда она инициализирована, или всегда значит не всегда ? предлагаю забить, написано достаточно
0
|
||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
|
| 13.05.2024, 15:12 | |
|
pup_kin, конечно же инициализация у статических объектов есть всегда
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 13.05.2024, 15:12 [ТС] | ||
|
0
|
||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
|
| 13.05.2024, 15:13 | |
|
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||||
| 13.05.2024, 15:15 [ТС] | |||||||||||||
|
и в чем она выражается?
Добавлено через 35 секунд
0
|
|||||||||||||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 13.05.2024, 15:15 | |
|
pup_kin
По-моему, вы не различаете 3 разных понятия: - объявление статического члена класса - определение статического члена класса -инициализация статического члена класса Это три разные части синтаксиса. И важно, что их именно 3, а не 2.
1
|
|
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
|||
| 13.05.2024, 15:16 | |||
0
|
|||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 13.05.2024, 15:16 | |
|
И вообще
не почитать ли матчасть https://habr.com/ru/articles/527044/ Чтобы хотя бы в терминах не плавать
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 13.05.2024, 15:18 [ТС] | ||
)Добавлено через 12 секунд объявление и определение Добавлено через 24 секунды чета от меня ускользнула какая-то важная деталь. надо осмыслить
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 13.05.2024, 15:18 | |
|
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 13.05.2024, 15:22 [ТС] | |
|
а в чем отличие для переменной/ поля определения от инициализации?
Добавлено через 1 минуту если инициализацией называется процесс присваивания значения переменной/полю согласно определению в процессе компиляции, то это казуистика как по мне.
0
|
|
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
|
| 13.05.2024, 15:27 | |
|
pup_kin,объявление - это способ сказать, что где-то объект был "физически" построен. Линкер найдёт потом после компиляции, где именно. И все упоминания привяжет туда
определение - это способ сказать, где "физически" будет находиться в коде объект (образно выражаясь) инициализация - это самое первое заполнение байтиков внутри этого объекта (тоже образно)
0
|
|
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||||||
| 13.05.2024, 15:30 | |||||||
|
.cpp:
Определение обязано быть. (Разные краевые случаи неиспользуемых, но объявленных переменных, приведённые в теме, не рассматриваем, ибо практического смысла в них нет.) А вот инициализацию можно в программе не указывать, если она не требуется. Тогда по стандарту подразумевается {} (для int это 0)
0
|
|||||||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 13.05.2024, 15:32 [ТС] | |
|
ага
как я понял есть две базовые элемента объявление и определение. из них можно сделать третью инициализацию,если я верно понял объявление + определение равно инициализация. объявление int ф; определение ф =1; int ф=1; - инициализация, равная объявление + определение. я не вижу трех атомарных элементов ![]() может я ошибаюсь.
0
|
|
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,319
|
|
| 13.05.2024, 15:33 | |
|
0
|
|
| 13.05.2024, 15:33 | |
|
Не могу вызвать простой статический класс Статический полиморфизм. Базовый класс «прямоугольник» Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> создать статический массив строк как статический массив указателей на строки, задание ниже --> Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|