что такое контекст статического инициализатора и как мне объявить о дружбе с ним?

class test{
static const int veryprivate=3;
};

const int anarray[]={test::veryprivate};

g++ умно указывает, что anarray не является ни функцией, ни функцией-членом. Можно ли исправить это хранение кода veryprivate private? C ++ 11 принято.

1

Решение

Делать anarray ссылка на массив:

class test {
static const int veryprivate = 3;
friend class animpl;
};
class animpl {
public:
static const int anarray[] = { test::veryprivate };
};
auto &anarray = animpl::anarray;
2

Другие решения

Других решений пока нет …