реклама на сайте
подробности

 
 
> Глюк ИАРа или мой?, Почему ИАР не дает проинициализировать статический атрибут класса
lamerok
сообщение May 14 2007, 06:44
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88



Посмотрите плз картинку. Почему ИАР ругается на инициализацию статического члена класса, при этом на инициализацию не статического члена говорит, что атрибут должен быть статическим????.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lamerok
сообщение May 16 2007, 05:23
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88



Цитата(Сергей Борщ @ May 16 2007, 11:31) *
Не должен!!! Потому что значение статического члена должно быть определено только в одном cpp-файле. Не путайте константную переменную и константный член. Это константная переменная может в разных файлалх иметь одинаковое имя и разное значение.

Почему в одном месте???? Стандарт не воспрещает этого...
Проверил на других компиляторах, везде один и тот же результат, подстановка конктретного числа.
Например, на 4.12А лицензионном прокатило...
Может быть опции у компилятора, какие нибудь нужно поставить???? ЧТобы он воспринимал это как надо???

Цитата(Сергей Борщ @ May 16 2007, 11:31) *
Раз он отличается у разных объектов, значит это обычный константный член. Раз это обычный член, вы его можете проинициализировать в конструкторе. Раз обычный член - константный, значит конструктор - это единственное место, где вы можете его проинициализировать.


Полностью согласен, тогда чего же ИАР мне позволил инициализацию (не статика) сделать не в конструкторе??? И заменл все это числом????



Цитата(Сергей Борщ @ May 16 2007, 11:31) *
P.S. Машина - дура (ИАР тоже), это не подвергается сомнению. Но не потому, что не делает то, что вы хотите, а наоборот, потому что вместо этого тупо делает именно то, что вы ему написали. Если то, что вы хотите и то, что вы написали - разные вещи, то при чем здесь ИАР?


Когда я инициализирую константу в хидере класса... не савля статик (Такого делать вообще нельзя) ИАР делает то чтоя задумал сделать со статиком..... ТОгда какого хрена он не делает тоже самое со статиком????

Самое интересное другое... Все это не работает только с флоатом... с интом16, инт8, инт 32 все прекрасно канает на всех компиляторах.

И кстати в любом случае результат действия:
internalVoltRange = initialVoltValueRange;
в internalVoltRange должнен стать 800.0f верно???

А в случае когда статик инициализируется в *.cpp
такого не происхит... так как
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 16 2007, 06:59
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(lamerok @ May 16 2007, 12:23) *
Почему в одном месте???? Стандарт не воспрещает этого...
Чтобы не толочь дальше воду в ступе, приведите выдержку из стандарта.
Цитата(lamerok @ May 16 2007, 12:23) *
Когда я инициализирую константу в хидере... не савля статик (Такого делать вообще нельзя)
Такое в С++ делать можно. Раз вы этого не знаете - последуйте своему совету:
Цитата
C++ изучать - так это всем надо сделать
Разберитесь, наконец, чем статический константный член отличается от статической константной переменной.
Для константной переменной найдите в книжке, чем отличаются записи int const A = 2; и extern int const A = 2;, тогда вы поймете почему первую запись можно вставлять в .h а второую только в .cpp
Для константного члена помедитируйте над ключевым словом mutable.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- lamerok   Глюк ИАРа или мой?   May 14 2007, 06:44
- - Сергей Борщ   Цитата(lamerok @ May 14 2007, 09:44) Посм...   May 14 2007, 12:00
- - IgorKossak   Статические члены класса определяются и инициализи...   May 14 2007, 15:26
- - lamerok   Цитата(Сергей Борщ @ May 14 2007, 15:00) ...   May 15 2007, 02:31
|- - dxp   Цитата(lamerok @ May 15 2007, 09:31) Т.е....   May 15 2007, 03:15
|- - lamerok   Цитата(dxp @ May 15 2007, 06:15) А с чего...   May 15 2007, 03:43
|- - Сергей Борщ   Цитата(lamerok @ May 15 2007, 06:43) Но т...   May 15 2007, 10:27
|- - IgorKossak   Цитата(Сергей Борщ @ May 15 2007, 17:27) ...   May 15 2007, 15:51
||- - zltigo   Цитата(IgorKossak @ May 15 2007, 22:51) Э...   May 15 2007, 16:32
|- - lamerok   Цитата(Сергей Борщ @ May 15 2007, 17:27) ...   May 16 2007, 00:11
|- - Сергей Борщ   Цитата(lamerok @ May 16 2007, 07:11) Каже...   May 16 2007, 04:31
|- - lamerok   Цитата(Сергей Борщ @ May 16 2007, 13:59) ...   May 16 2007, 08:23
- - lamerok   Вот что получается... в мар файле Мои переменные л...   May 16 2007, 07:05
|- - IgorKossak   Цитата(lamerok @ May 16 2007, 14:05) Вот ...   May 16 2007, 16:54
|- - lamerok   Цитата(IgorKossak @ May 16 2007, 23:54) N...   May 17 2007, 00:57
|- - Сергей Борщ   Цитата(lamerok @ May 17 2007, 07:57) Но к...   May 17 2007, 03:05
||- - lamerok   Цитата(Сергей Борщ @ May 17 2007, 10:05) ...   May 17 2007, 05:19
||- - Сергей Борщ   Цитата(lamerok @ May 17 2007, 12:19) Код-...   May 17 2007, 06:13
||- - lamerok   Цитата(Сергей Борщ @ May 17 2007, 09:13) ...   May 20 2007, 16:03
|- - IgorKossak   Цитата(lamerok @ May 17 2007, 07:57) Хочу...   May 17 2007, 05:13
- - lamerok   После кучи экспериментов пришел к выводу: 1. Можно...   May 21 2007, 14:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016