21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
||||||
1 | ||||||
Массивы в заголовочных файлах20.03.2011, 16:58. Показов 12338. Ответов 41
Метки нет (Все метки)
в заголовочном файле в описании класса пишу:
Error 1 error C2059: syntax error : '{' c:\users\dimarik\desktop\lalala\lal ala\file.h 15 Error 2 error C2334: unexpected token(s) preceding '{'; skipping apparent function body c:\users\dimarik\desktop\lalala\lal ala\file.h 15 Error 3 error C2059: syntax error : '{' c:\users\dimarik\desktop\lalala\lal ala\file.h 15 Error 4 error C2334: unexpected token(s) preceding '{'; skipping apparent function body c:\users\dimarik\desktop\lalala\lal ala\file.h 15 Можно ли в заголовочном файле создать массив констант?
0
|
20.03.2011, 16:58 | |
Ответы с готовыми решениями:
41
Про добавление заголовочных файлов в заголовочных файлах О стандартных заголовочных файлах Константы в заголовочных файлах Линковка, реализация в заголовочных файлах |
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
20.03.2011, 17:00 | 2 |
delll
0
|
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
|
20.03.2011, 17:10 [ТС] | 6 |
ошибка в этом, потму что до добавления этого массива в файл, всё нормально работало. Двойного определения нет, потому что стоит защита в виде #ifndef....
Мне нужен массив, который будет являться private и который не будет переопределяться в классе. Я читал в литературе, если мы не будем изменять содержимое переменных, необходимо определять её как константу. Здесь аналогично то же самое или как? Как правильно надо делать?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
20.03.2011, 17:35 | 7 |
давай по порядку
не всегда спасает отца "русской демократии" на лицо кросс-определения когда два блока лезут к одному определению он является членом класса?? и чем тебе enum не угодил? Добавлено через 17 минут у тебя нет определение константы const
0
|
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
|
20.03.2011, 17:36 [ТС] | 9 |
0
|
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
||||||
20.03.2011, 17:37 [ТС] | 11 | |||||
нет определения как const - это я код криво скопировал.
0
|
20.03.2011, 17:39 | 12 | ||||||||||
Сообщение было отмечено как решение
Решение
Вот показал бы исходник - сразу бы тебе ответили на вопрос. Внутри класс у тебя описываются ПОЛЯ класса, а не глобальные переменные. Класс - это описание типа, а потому он не может содержать данных
Добавлено через 1 минуту Файл *.h:
1
|
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
||||||
20.03.2011, 17:40 [ТС] | 13 | |||||
0
|
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
|||||||||||
20.03.2011, 17:43 [ТС] | 15 | ||||||||||
А почему когда я пишу
0
|
20.03.2011, 17:45 | 16 |
Одно из раздолбайских свойств языка Си++. Для целочисленных переменных сие разрешено. Из тех соображений, что при любой попытке чтения переменной реально будет подставляться константа. Но адрес вроде бы как взять будет нельзя. Если ты вместо int'а подставишь float, то скорее всего будет ошибка
1
|
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
|
||||||
20.03.2011, 17:48 [ТС] | 17 | |||||
0
|
20.03.2011, 17:51 | 18 |
static означает поле, единое для всех экземпляров данного класса. По сути дела это означает отдельная глобальная переменная, которая доступна только методам данного класса. А без static - это обычное поле структуры или класса. Описание структуры или класса - это описание типа. Оно НЕ является "материальным" (т.е. типу ничего не соответствует в машине). Материальным является лишь объект (переменная или динамически выделенный экземпляр класса). И данными можно инициализировать лишь объект. Когда ты пишешь "static const int qqq = 16;" то почему-то разработчики Си++ порешили, что здесь как бы задаётся не статическое поле класса (т.е. не объект), а константа (т.е. не материальная субстанция)
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
20.03.2011, 17:55 | 19 |
ну тут дело вкуса мне enum более привычен
хотя зависит от задачи класс это просто описатель и пока не объявлен хоть один объект в памяти место под класс не выделяется и компилятор просто не может(не знает) куда пихать твои константы. по моему делать так тоже не рекомендуется
0
|
20.03.2011, 17:57 | 20 |
0
|
20.03.2011, 17:57 | |
20.03.2011, 17:57 | |
Помогаю со студенческими работами здесь
20
Определение переменных в заголовочных файлах Статические свойства структур в заголовочных файлах Расположение определения функций в заголовочных файлах Странные объявления функций в заголовочных файлах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |