Здравствуйте, Bell, Вы писали:
B>Здравствуйте, L2-Max, Вы писали:
LM>>Можно ли инициализировать статический константный массив внутри объявления класса, если можно то как ??
B>Нельзя. B>Расскажи, зачем надо — мож предложат обходные решения.
значица так
чтобы не вдаваться в подробности, у меня есть проэкт который работает с базами данных, и формами , т. е. данные берутся из форм (предварительно валидируются) затем эту данные (данные могут быть многоформенные(но однозначные) т. е. если юзер из выпадающего списка выбрал "гривна (UAH)" то в одном месте записывается гривна, в другом UAH еще в одном индекс местоположения "UAH" и "гривна" в статическом массиве) для уменьшения моей напряженности, мне нужно в объявлении типа класса сразуже инициализировать массив начальных значений (константный (потому что .... последователь... блин ...константа ....)), и т. д. + этот класс вложенный, остальные классы не имеющие доступа к XXXклассу не могут оздавать тип этого.
Вижу всетаки прийдется все это инициализировать за пределами объявления ...
Здравствуйте, 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>};
Статический константный массив внутри класса не инициализируется. Более того, Така как он константный, то его невозможно проинициализировать в теле конструктора. Более того, так как это массив, то его невозможно проинициализировать в списке инициализации конструктора. Остается только как статическую константу — определить вне класса имеено так. как у тебя написано.
Внутри класса по нынешнему стандарту разрешается инициализировать ТОЛЬКО статические константы интегрального типа (булевские, чаровские и все целые).
Может, вокруг массива некую обертку зделать в виде класса, а потом уж поле объявить статическим?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, <Аноним>, Вы писали:
А>Только если забыть, что данная ф-ция будет проинстанциированна в каждой единице трансляции
Ну и что? Линкер разберётся.
А>Вариант с размещением в .срр -- самый корректный.
То так.
Здравствуйте, Аноним, Вы писали:
А>Только если забыть, что данная ф-ция будет проинстанциированна в каждой единице трансляции
А>Вариант с размещением в .срр -- самый корректный.