Непонятки со статическими полями класса04.08.2015, 23:19. Показов 6260. Ответов 15
Метки нет (Все метки)
Обязательно ли инициализировать статическую константу в определении класса?
Можно ли ее определить вне области определения класса? А статический константый массив? Добавлено через 49 минут Ну ответьте кто-нубудь?
0
|
|
| 04.08.2015, 23:19 | |
|
Ответы с готовыми решениями:
15
Ошибка с статическими членами класса Сделать несколько экземпляров класса со статическими полями
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|||||||||
| 04.08.2015, 23:22 | |||||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||||
| 04.08.2015, 23:28 [ТС] | |||||
|
0
|
|||||
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
| 04.08.2015, 23:31 | |
|
что мешает взять, да попробовать в коде сделать то, что у вас вопросы вызывает?
компилится - значит можно. нет - надо дальше копать, может просто неправильно сделали.
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|||
| 04.08.2015, 23:38 | |||
|
0
|
|||
| 04.08.2015, 23:39 [ТС] | |
|
Обязательно ли инициализировать статическую константу в определении класса?
Можно ли ее определить вне области определения класса? На оба вопроса у тебя подразумевался ответ да.
0
|
|
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
| 04.08.2015, 23:42 | |
|
в определении класса можно только константы интегральных типов инициализировать, если не добавили каких-нибудь новых фич в язык. как быть с остальными типами? т.е. вне класса только и можно их инициализировать. в смысле не интегральные константы. ну раз так, то и интегральные можно. т.е. вне класса инициализировать статические константы можно.
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
| 04.08.2015, 23:44 | |
|
Ferrari F1, и что тебя смущает? Логично, что если ты инициализируешь const int в классе, то второй раз это делать не нужно, а если ты инициализируешь её вне класса, то и в классе она у тебя инициализирована.
По моему разумению, в классе она вообще объявляется без определения.
0
|
|
| 04.08.2015, 23:47 [ТС] | |
|
0
|
|
|
|
|
| 04.08.2015, 23:50 | |
|
Массивы в заголовочных файлах
Когда статическую целочисленную константу инициализируют прямо в описании класса, то, строго говоря, это корявое действо. Разработчики языка скорее всего пошли на это, чтобы можно было использовать статические поля класса для описания массивов. Тут уже по смыслу получается не переменная, а макрос (значение есть, а выделенной памяти нет) C++ class T { public: static const int i = 4; }; int main (void) { int x = T::i; // Если эту строку закомментировать, то всё нормально скомпилируется // как если бы T::i был макросом. Т.е. значение мы добудем, но в памяти // переменной T::i не будет const int *p = &T::i; return 0; } Code $ g++ t.cc /tmp/cc6anBoD.o:t.cc:(.text+0x1a): undefined reference to `T::i' collect2: ошибка: выполнение ld завершилось с кодом возврата 1
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
||||||
| 04.08.2015, 23:55 | ||||||
|
Ferrari F1, я тебя не понимаю. Типа, в классе ты вообще ничего писать не хочешь?
0
|
||||||
| 05.08.2015, 00:01 [ТС] | ||||||||||||
0
|
||||||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 05.08.2015, 00:03 | |
|
0
|
|
| 05.08.2015, 00:04 [ТС] | |
|
DrOffset, аа да, забыл
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||||||||||||
| 05.08.2015, 00:17 | ||||||||||||
|
Массивы нельзя определять внутри класса, потому что они сразу подразумевают адресацию. Но в С++11 ввели constexpr. С помощью которых, можно определять и массивы и, например, double.
constexpr будет работать на этапе компиляции до тех пор, пока это возможно. Если ты напишешь код, который берет адрес такой переменной (как в примере Evg), то constexpr уже не спасет и определение придется вынести из класса. Т.е. внутри класса статические константы определяются только если с ними идет работа исключительно на этапе компиляции. Во всех остальных случаях, нужно честное определение.
1
|
||||||||||||
| 05.08.2015, 00:17 | |
|
Помогаю со студенческими работами здесь
16
Непонятки с полями свойств класса get set - требуется ";" Стоит ли делать все методы и переменные-члены класса list статическими
Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда Непонятки с конструктором класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|