Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.89
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
#1

Массивы в заголовочных файлах - C++

20.03.2011, 16:58. Просмотров 5372. Ответов 41
Метки нет (Все метки)

в заголовочном файле в описании класса пишу:


C++
1
int _const_iMas[4] = {0x63,0x7c,0x78,0x79};
В итоге компилятор подчёркивает знак '=' и выдает ошибки:

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2011, 16:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы в заголовочных файлах (C++):

Про добавление заголовочных файлов в заголовочных файлах - C++
В который раз эта вещь засовывает мозги в блендер! Я про то, что не могу однозначно запомнить (основываясь на моих знаниях о директиве...

О стандартных заголовочных файлах - C++
Не знаю в какую категорию отнести данное нубство, но все же: Часто использую некоторые возможности/функции для которых не делал...

Определение переменных в заголовочных файлах - C++
Здорова! Определил переменную в заголовочном фале от так #pragma once #ifndef _imya_zagol_fayla #define _imya_zagol_fayla ...

Линковка, реализация в заголовочных файлах - C++
Ситуация следующая. Представим себет хедер, который содержит некоторый функционал и должен использоваться в нескольких проектах. Причем ...

Объявлние классов в разных заголовочных файлах - C++
Приветствую всех участников форума. Есть 2 класса А и В. Каждый из содержит указатель на другой класс. Как сделать объявление классов в...

Статические свойства структур в заголовочных файлах - C++
Всем привет. Не могу найти в интернете инфу о том, как ведут себя статические свойства структур определённых в заголовочных файлах и...

41
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
20.03.2011, 17:00 #2
delll
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
20.03.2011, 17:02 #3
объяви его в С
а в заголовочном файле опиши внешним extern

Добавлено через 1 минуту
или может тебе подойдет enum
0
Evg
Эксперт CАвтор FAQ
18449 / 6499 / 454
Регистрация: 30.03.2009
Сообщений: 18,145
Записей в блоге: 29
20.03.2011, 17:03 #4
Цитата Сообщение от Dimarik__ Посмотреть сообщение
Можно ли в заголовочном файле создать массив констант?
Можно, но по-хорошему так не делают. Ошибка у тебя из-за чего-то другого. Покажи код на несколько строк выше и ниже этого места (или лучше вообще весь код)
1
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
20.03.2011, 17:05 #5
Цитата Сообщение от neske Посмотреть сообщение
CodeBlocks компилирует без проблем
судя по ошибкам
этот заголовок подключен к нескольким файлам
==двойное определение
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
20.03.2011, 17:10  [ТС] #6
Цитата Сообщение от Evg Посмотреть сообщение
Можно, но по-хорошему так не делают. Ошибка у тебя из-за чего-то другого. Покажи код на несколько строк выше и ниже этого места (или лучше вообще весь код)
ошибка в этом, потму что до добавления этого массива в файл, всё нормально работало. Двойного определения нет, потому что стоит защита в виде #ifndef....
Мне нужен массив, который будет являться private и который не будет переопределяться в классе. Я читал в литературе, если мы не будем изменять содержимое переменных, необходимо определять её как константу. Здесь аналогично то же самое или как? Как правильно надо делать?
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
20.03.2011, 17:35 #7
давай по порядку
Цитата Сообщение от Dimarik__ Посмотреть сообщение
защита в виде #ifndef
не всегда спасает отца "русской демократии"
на лицо кросс-определения когда два блока лезут к одному определению
Цитата Сообщение от Dimarik__ Посмотреть сообщение
Мне нужен массив, который будет являться private
он является членом класса??

и чем тебе enum не угодил?

Добавлено через 17 минут
Цитата Сообщение от Dimarik__ Посмотреть сообщение
определять её как константу
у тебя нет определение константы const
0
Evg
Эксперт CАвтор FAQ
18449 / 6499 / 454
Регистрация: 30.03.2009
Сообщений: 18,145
Записей в блоге: 29
20.03.2011, 17:35 #8
Цитата Сообщение от ValeryS Посмотреть сообщение
и чем тебе enum не угодил?
А с какого перепугу там вообще enum должен быть? Не говоря уж о том, что человек спрашивает о причинах конкретной проблемы, а не о том, как её затоптать
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
20.03.2011, 17:36  [ТС] #9
не всегда спасает отца "русской демократии"
на лицо кросс-определения когда два блока лезут к одному определению
В смысле?

он является членом класса??
Да.
и чем тебе enum не угодил?
То есть такое через массивы сделать не вариант и нужен обязательно enum? С массивами просто привычнее
0
Evg
Эксперт CАвтор FAQ
18449 / 6499 / 454
Регистрация: 30.03.2009
Сообщений: 18,145
Записей в блоге: 29
20.03.2011, 17:36 #10
Dimarik__, пока ты не покажешь нормально исходник, разговор, скорее всего, будет довольно беспредметным
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
20.03.2011, 17:37  [ТС] #11
нет определения как const - это я код криво скопировал.
C++
1
const int _const_iMas[4] = {0x63,0x7c,0x78,0x79};
0
Evg
Эксперт CАвтор FAQ
18449 / 6499 / 454
Регистрация: 30.03.2009
Сообщений: 18,145
Записей в блоге: 29
20.03.2011, 17:39 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Dimarik__ Посмотреть сообщение
Да
Вот показал бы исходник - сразу бы тебе ответили на вопрос. Внутри класс у тебя описываются ПОЛЯ класса, а не глобальные переменные. Класс - это описание типа, а потому он не может содержать данных

Добавлено через 1 минуту
Файл *.h:

C++
1
2
3
4
class T
{
  static const int arr[4];
};
Файл *.cpp:

C++
1
const int T::arr[4] = { 1, 2, 3, 4 };
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
20.03.2011, 17:40  [ТС] #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef file
#define file
#include <string>
#endif
using namespace std;
 
class Cryptograph
{
    private:
        string _sText;
 
 
    const int _const_iMas[4] = {0x63,0x7c,0x78,0x79};
 
 
        /////////////////////////////////////////////////
        //Методы
        ////////////////////////////////////////////////////
        void convertStringTo3dArray(string &str_1, unsigned char *** array_1,
            unsigned char *** array_2, unsigned long long a, int b, int c);
 
        
    public:
        Cryptograph(char* cText, char* cKey);//конструктор
 
};
0
Evg
Эксперт CАвтор FAQ
18449 / 6499 / 454
Регистрация: 30.03.2009
Сообщений: 18,145
Записей в блоге: 29
20.03.2011, 17:41 #14
Dimarik__, в посте 12 уже написал
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
20.03.2011, 17:43  [ТС] #15
А почему когда я пишу
C++
1
static const int const_int_charsInBlock = 16;//из скольки символов будет стостоять блок
всё работает нормально, а когда пишу
C++
1
static const int _const_iMas[4] = {0x63,0x7c,0x78,0x79};
компилятор ругается
0
20.03.2011, 17:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2011, 17:43
Привет! Вот еще темы с ответами:

Куча ошибок в заголовочных файлах,вызванных из windows.h! - C++
с чем это может быть связано? этот же код без всяких изменений уже компилировался и работал... 1&gt; Исходный код.cpp 1&gt;c:\program...

Использование указателей на контейнеры STL в заголовочных файлах - C++
Для использования указателей на I/O классы достаточно включить &lt;iosfwd&gt; который содержит опережающие объявления и таким образом появляется...

Назначение заголовочных файлов - C++
Я читала учебник и википедию - никак не доходит. В общем, может я неправильно поняла: есть у меня &quot;Моя программа.cpp&quot;, и есть...

Иерархия заголовочных файлов - C++
Вопрос такой. Есть 2 заголовочных файла с классами: core.h interface.h В core.h происходит #include interface.h В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.