|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Статический класс25.04.2024, 04:02. Показов 10807. Ответов 165
Метки нет (Все метки)
Всем привет
хочу создать полностью статический класс и создаю но возникают ошибки неопределенные reference и пр. хотелось бы сделать так
пишу в итоге так
при компиляции получаю ошибки необъявленные ссылки на var1, var2 .... undefined reference to `SomeClass::var1 вопрос как объявить статический метод класса, а в идеале и вообще весь класс, чтобы не создавать в коде его экземпляр? Добавлено через 4 минуты основная задача вынести этот статический класс в один файл то бишь в модуль не хедер + cpp а сразу все в одном как в шарпах - очень удобно это они придумали в шарпах
0
|
|||||||||||
| 25.04.2024, 04:02 | |
|
Ответы с готовыми решениями:
165
Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним Статический класс Статический член указатель на класс |
|
6313 / 3036 / 1053
Регистрация: 01.06.2021
Сообщений: 11,558
|
||
| 26.04.2024, 20:52 | ||
|
хочется уменьшить писанину - меняй язык Если код для себя, то можно писать как угодно. Но кому, блет, нужны такие bloated заголовки? Вы задумывайтесь, как вообще переводится слово header и для чего он предназначен. Ну и что с того, что вы написали все в заголовке и файлов стало меньше? Блет, пишите всё в одном main.cpp и будет вам один файл)))
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 26.04.2024, 20:58 | ||
|
Но иногда это просто нужно сделать. Так же, как, например, нужно делать с шаблонами.
1
|
||
|
"C with Classes"
|
|
| 26.04.2024, 21:37 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 26.04.2024, 21:51 | ||
|
Например у нас есть Си-библиотека (или просто библиотека с Си-интерфейсом). Зачем делают библиотекам Си-интерфейс, я думаю, ни для кого не секрет: ABI Си стабильно и поддерживается большинством программных систем. Но у Си-интерфейс есть недостатки, в частности необходимость вручную контролировать время жизни ресурсов. Как можно получить преимущества С++, но при этом не потерять в переносимости? Допустим, я хочу написать библиотеку в VC++, но дать возможность ей пользоваться из любого компилятора С и С++ под Windows. Я делай ей Cи API, и делаю ей C++ API, которое полностью inline и инкапсулирует работу с Си API. Т.к. все функции в С++ API - inline, т.е. не экспортируются, то различие ABI при использовании его из разных компиляторов не играет роли: каждый компилятор собирает его так, как ему нужно, сводя все в итоге к сишным вызовам, которые уже переносимы. Хорошо написанная таким образом библиотека не выдает свою Си-сущность, пользователь не заглядывая в заголовочный файл даже и не знает, что на самом деле пользуется Си-интерфейсами. Добиться этого без inline api просто невозможно.
2
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||||||||
| 26.04.2024, 23:30 [ТС] | |||||||||||||||||
|
определение переменной
![]() я написал определение потому что изначально указал явно значение
0
|
|||||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 26.04.2024, 23:51 | |
|
pup_kin, там в примере в видео была глобальная переменная, а у вас статическая в классе.
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 27.04.2024, 02:23 [ТС] | |
|
а такое усложнение языка с++ оно с чем-то связано ?
с тем что каждый пишет кто во что горазд, и потом при слиянии проектов возникают всякие инциденты? т.е. что не выработан общий стиль какой-то? потому что пипец, мне кажется на осмысление того доклада ну минимум неделя нужна- а по уму наверн месяц, а это базовые вещи - это даже не прикладная задача. это наверное все актуально при распределенной команде и групповой разработке? Добавлено через 1 час 35 минут а как раньше справлялись с множественным определением, когда не было "inline" - писали код по другому?
0
|
|
|
"C with Classes"
|
|
| 27.04.2024, 04:33 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 27.04.2024, 08:50 | |||||||
|
Есть книга "Дизайн и эволюция С++" от автора языка, она малотехническая, в основном написана как мемуары. Там все про это есть, про причины, про сложность истинную и мнимую. Я уже понял, что вы не особо любите читать, но если уж взялись за С++, это придется преодолеть. Иначе у вас ничего не получится с этим языком. Большая часть расхождений с ним связана с какими-то техническими нюансами конкретных проектов или историческими причинами. Если вы думаете, что в каком-нибудь C# нормально разбираться сильно проще, то вы ошибаетесь. Да, там сложность распределена иначе, но она все равно есть. И у тех, тех кто игнорирует нюансы все равно будут проблемы, или будут проблемы у тех, кто пользуется результатами их поверхностного программирования. Да, код писали по-другому. Добавлено через 12 минут
1
|
|||||||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 27.04.2024, 09:01 | |||
|
Во всех cpp-файлах, кроме одного. На кой вам именно статический класс понадобился? Для решения вашей задачи C++ предлагает другие конструкции, вот и весь секрет. Тот же namespace, например. Или любимый в С++ среде синглтон. И никакие "статические" классы не требуются. Хотя, согласен, иметь переменные "в модуле", т.е. этакий синглтон в масштабах приложения - удобная штука в целом. Но в С++ в самом языке впрямую этого нет. Добавлено через 3 минуты PS Как-то видел код на C#, написанный матёрыми С++ никами. Так там половина кода состояла из using{}, т.к. парни в принципе не понимали и не принимали концепцию "как это так, деструктор вызовется хрен знает когда?!". Еще раз: это были реально толковые и матёрые С++ программисты, цитировавшие стандарт наизусть, но вот такая вот проф-деформация. Они просто не умели иначе мыслить плюс пару раз обожглись об незакрытый вовремя файл (в деструктуре же должен был закрыться! уже же вышел из области видимости!) Ну и понеслась Хотя на мой вкуса - дельфиста - конструкция try / finally, которая в C# имеет место быть, в тех случаях, когда это требуется (типа закрыть файл) - намного нагляднее, чем using. Но т.к. в С++ try/finally нет - про паттерны его использования никто из этих парней даже и не подумал, а может и не в курсе такой фичи.
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 27.04.2024, 09:24 | ||
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 27.04.2024, 09:35 | ||
|
Да она и не нужна в общем-то в С++. И таки да, это были по большей части юниксовые программисты.
0
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||||||||||||||||||||||
| 06.05.2024, 03:58 [ТС] | ||||||||||||||||||||||||||
|
я чет совсем отупел
почему в одном случае нормально работает без inline статическое поле и метод t и test и требует inline для
в котором используются переменные LastLatitude и др. Добавлено через 8 минут ага при изменении кода внутри calculateTheMovement с
многое упрощает? верно ли понимают что можно везде ставить inline - и это не будет плохо и в последующих релизах - эта тенденция сохраниться?
0
|
||||||||||||||||||||||||||
|
фрилансер
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|||
| 06.05.2024, 06:35 | |||
|
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 06.05.2024, 08:17 | ||||
t есть в cpp.Добавлено через 2 минуты t. И не нужен будет inline.И вы должны понять (это обязательно), что он от вас не inline требует. а определение. А уж как вы его (определение) предоставите, через inline или как - это уже ваше дело.
1
|
||||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||
| 06.05.2024, 19:40 [ТС] | ||||||
|
а чем плохо инициализация в классе неконстантного статического выражения?
какие могут быть последствия от такой инициализации? Compilation error: ISO C++ forbids in-class initialization of non-const static member 'odometer::tachometer' чем инициализация вне тела класса
0
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 06.05.2024, 23:51 | ||
|
Какое может быт последствия, что вы просто подумаете что встали и не встали. /подумали что пришли на работу но не пришли. Подумали что спасли друга но не спасли. И ? Раница есть ? Лучше продавайте бургеры.
0
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||||||||||||
| 07.05.2024, 20:11 [ТС] | ||||||||||||||||
|
вообще не понимаю какая разница
или
что плохого произойдет если я внутри класса инициализирую поле? Добавлено через 9 минут более того в шарпах к примеру так и работает и ничего страшного не происходит
но опять же непонятно. почему в шапрах так можно писать, а в с++ нельзя? для чего инициализация именно вне класса нужна? или это просто стоит принять как особенность синтаксиса языка и не думать ?
0
|
||||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 07.05.2024, 20:12 | |
|
pup_kin, сугубо исторические причины.
1
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 07.05.2024, 20:13 [ТС] | |
|
т.е. из хедера и сипипи
я вспомнил, я то пишу все в одном. да точно описательная часть и сипипишная. спустя две недели кажется что-то становиться понятно
0
|
|
| 07.05.2024, 20:13 | |
|
Не могу вызвать простой статический класс Статический полиморфизм. Базовый класс «прямоугольник» Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> создать статический массив строк как статический массив указателей на строки, задание ниже --> Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|