Мне нужно инициализировать статический массив. Не все значения являются последовательными.Инициализировать разреженный статический массив
Что-то вроде этого отлично работает для последовательного массива:
class Foo {
public:
static const char * name[];
}
const char * Foo::name[] = { "Sun", "Moon" };
Как я могу присвоить значения в произвольных позициях в массиве? Мне нужно сделать что-то вроде этого (псевдокод):
const char * Foo::name[] = { 67: "Sun", 68: "Moon" };
Массив никогда не будет больше 255; индексы исходят из значений байтов.
Я нашел part of a thread где кто-то дает пример нечто похожее на то, что я хочу, но я не мог получить что-нибудь подобное, чтобы работать.
type array[SIZE] = {[SIZE-4]=1, 2, 3, 4};
'[SIZE-4] = 1' называются обозначенными intializers и доступны только на C и незаконны в C++ (однако в gcc они предлагают его как расширение). Однако нетривиальные (т. Е. Ваш пример) не поддерживаются. –