Инициализация статического константного массива внутри класс
От: L2-Max Украина  
Дата: 05.11.04 10:15
Оценка:
Можно ли инициализировать статический константный массив внутри объявления класса, если можно то как ??

В документации ничего нет по этому поводу, по крайней мере я не нашел

пример

class A{

static const int n[]={ ///компилятор выдает ошибку
0,1,2,3,4 ......и т.д.
};
};

const int A::n[]={ ///////не предлагать
...........
};
L2-Max
Re: Инициализация статического константного массива внутри к
От: Bell Россия  
Дата: 05.11.04 10:25
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Можно ли инициализировать статический константный массив внутри объявления класса, если можно то как ??


Нельзя.
Расскажи, зачем надо — мож предложат обходные решения.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Инициализация статического константного массива внутр
От: Аноним  
Дата: 05.11.04 22:24
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, L2-Max, Вы писали:


LM>>Можно ли инициализировать статический константный массив внутри объявления класса, если можно то как ??


B>Нельзя.

B>Расскажи, зачем надо — мож предложат обходные решения.


значица так

чтобы не вдаваться в подробности, у меня есть проэкт который работает с базами данных, и формами , т. е. данные берутся из форм (предварительно валидируются) затем эту данные (данные могут быть многоформенные(но однозначные) т. е. если юзер из выпадающего списка выбрал "гривна (UAH)" то в одном месте записывается гривна, в другом UAH еще в одном индекс местоположения "UAH" и "гривна" в статическом массиве) для уменьшения моей напряженности, мне нужно в объявлении типа класса сразуже инициализировать массив начальных значений (константный (потому что .... последователь... блин ...константа ....)), и т. д. + этот класс вложенный, остальные классы не имеющие доступа к XXXклассу не могут оздавать тип этого.


Вижу всетаки прийдется все это инициализировать за пределами объявления ...
Re[3]: Инициализация статического константного массива внутр
От: Аноним  
Дата: 05.11.04 22:27
Оценка:
Вижу чем больше опыта тем все труднее и труднее находить ответы на вопросы .....


это к слову .....


к стати насчет инициализации , если кто имеет ссылку на страуступа где есть подобное объяснение почему нельзя и т. д. плз кинте .....
Re: Инициализация статического константного массива внутри к
От: LaptevVV Россия  
Дата: 06.11.04 12:09
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Можно ли инициализировать статический константный массив внутри объявления класса, если можно то как ??


LM>В документации ничего нет по этому поводу, по крайней мере я не нашел


LM>пример


LM>class A{


LM> static const int n[]={ ///компилятор выдает ошибку

LM> 0,1,2,3,4 ......и т.д.
LM> };
LM>};

LM>const int A::n[]={ ///////не предлагать

LM> ...........
LM>};
Статический константный массив внутри класса не инициализируется. Более того, Така как он константный, то его невозможно проинициализировать в теле конструктора. Более того, так как это массив, то его невозможно проинициализировать в списке инициализации конструктора. Остается только как статическую константу — определить вне класса имеено так. как у тебя написано.

Внутри класса по нынешнему стандарту разрешается инициализировать ТОЛЬКО статические константы интегрального типа (булевские, чаровские и все целые).

Может, вокруг массива некую обертку зделать в виде класса, а потом уж поле объявить статическим?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Инициализация статического константного массива внутр
От: Аноним  
Дата: 18.08.09 09:59
Оценка: +1
// h-файл
class C
{
public:
C(){};

static const int arr[];
};

// cpp-файл
const int C::arr[] = {0,1,2,3,4,5};
Re: Инициализация статического константного массива внутри к
От: alzt  
Дата: 18.08.09 12:16
Оценка:
Здравствуйте, L2-Max, Вы писали:

Такой вариант подойдёт:

class A
{
public:
    static const int* const GetArr()
    {
        static const int arr[] = {0,1,2,3,4,5};
        return arr;
    }
};

?
Re[2]: Инициализация статического константного массива внутр
От: Аноним  
Дата: 18.08.09 13:31
Оценка:
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, L2-Max, Вы писали:


A>Такой вариант подойдёт:


A>
A>class A
A>{
A>public:
A>    static const int* const GetArr()
A>    {
A>        static const int arr[] = {0,1,2,3,4,5};
A>        return arr;
A>    }
A>};
A>

A>?

Только если забыть, что данная ф-ция будет проинстанциированна в каждой единице трансляции

Вариант с размещением в .срр -- самый корректный.
Re[3]: Инициализация статического константного массива внутр
От: byleas  
Дата: 18.08.09 13:53
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Только если забыть, что данная ф-ция будет проинстанциированна в каждой единице трансляции

Ну и что? Линкер разберётся.

А>Вариант с размещением в .срр -- самый корректный.

То так.
Re[3]: Инициализация статического константного массива внутр
От: alzt  
Дата: 18.08.09 15:06
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>Только если забыть, что данная ф-ция будет проинстанциированна в каждой единице трансляции


А>Вариант с размещением в .срр -- самый корректный.


Но оно почему-то не подходит топикстартеру.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.