Я понимаю, что если я хочу использовать массив const в пространстве имен классов в C ++, я не могу сделать:
class c
{
private:
struct p
{
int a;
int b;
};
static const p pp[2];
};
const c::p pp[2] = { {1,1},{2,2} };
int main(void)
{
class c;
return 0;
}
Я должен сделать:
class c
{
public:
struct p
{
int a;
int b;
};
static const p pp[2];
};
const c::p pp[2] = { {1,1},{2,2} };
int main(void)
{
class c;
return 0;
}
Но для этого требуется "p" и«pp» будет публичным, когда я хочу, чтобы они были приватными.Разве в C ++ нет способа инициализировать частные статические массивы?
РЕДАКТИРОВАТЬ: ------------------- Спасибо за ответы.Кроме того, я хочу, чтобы этот класс был библиотекой, только для заголовочных файлов, для использования основным проектом.Включение следующего инициализатора приводит к ошибкам «множественного определения» при включении в несколько файлов.
const c::p c::pp[2] = { {1,1},{2,2} };
Как я могу решить эту проблему?