Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, пожалуйста, почему нельзя определить static член класса в хедере: Например, так: Код: plaintext 1. Происходит ошибка: error: ISO C++ forbids in-class initialization of non-const static member 'MainWindow::currentX' static int currentX = 0; ^ Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:18 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
mr_virtusC++ forbids in-class initialization of non-const static member вроде всё написано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:29 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
Изопропил, это да, только почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:35 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
mr_virtusИзопропил, это да, только почему? По стандарту. По старому (98). По новому, (11) можно. http://www.stroustrup.com/C 11FAQ.html#member-init ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:52 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
А, кстати, там -- про нестатические члены. Может статические и сейчас нельзя. Ну и причина тому весьма прозрачна -- статический член нужно не только где-то объявить, но также и определить. Определён он должен в одном модуле компиляции, в отличие от заголовка класса с объявлением класса, который виден во всех модулях, которые его используют. Если возмущение идёт из-под опыта по Java -- в Java нет раздельной компиляции модулей, поэтому и нет таких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:56 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
авторОпределён он должен в одном модуле компиляции, в отличие от заголовка класса с объявлением класса, который виден во всех модулях, которые его используют. То есть если бы мы его определили в хедере, и хедере подключили к нескольким .cpp, при этом в этих .срр не определяли этот член, то он за счет определения в хедере, стал бы определен в нескольких файлах(несколько .cpp). А какие взникли бы из-за это проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 13:32 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
mr_virtusТо есть если бы мы его определили в хедере, и хедере подключили к нескольким .cpp, при этом в этих .срр не определяли этот член, то он за счет определения в хедере, стал бы определен в нескольких файлах(несколько .cpp). А какие взникли бы из-за это проблемы? Нарушение One Definition Rule. На практике -- не слинковалось бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 17:12 |
|
||
|
определение static члена класса в хедере
|
|||
|---|---|---|---|
|
#18+
MasterZiv, ну да. получается на каждый такой случай: хедер с определенным стат. членом + реализация в .срр, создавали бы в памяти свою переменную static int currentX = 0; получается несколько одинаковых переменных в памяти. Будет получается ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38596835&tid=2019587]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
130ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 233ms |

| 0 / 0 |
