Инициализировать статический член массива const класса в main (...), а не глобально? - PullRequest
0 голосов
/ 25 сентября 2011

Предположим, class Myclass { private: static const int myarray[2]; }

Если я хотел инициализировать myarray, я должен поместить следующее утверждение в глобальную область видимости:

const int Myclass::myarray[2] = {1,1};

Что мне делатьЕсли я хочу инициализировать мой массив в main () (в некоторые время выполнения вычисленные значения, например, в {n1, n2}, где n1 и n2 - это значения, рассчитанные во время выполнения в main () на основе командной строкиаргументы)

1 Ответ

2 голосов
/ 25 сентября 2011

Вы ничего не можете сделать.

Вы можете создать функцию-член, которая будет инициализировать значения, и вызывать ее.Но, если это static, private и const - тогда вы даже не можете сделать это и без параметров.

Вы не можете инициализировать static член вво время выполнения вы не можете получить доступ к private члену вне класса (если вы не заводите друзей), и вы не можете изменить const члена после инициализации.Вы можете изменить это.Вы все еще должны инициализироваться в глобальной области видимости, но вы можете изменить значения.

Обратите внимание, что пока он private, вы не сможете получить к нему доступ с main, но вы можете написатьфункция-обертка, чтобы сделать это для вас (или сделать это public).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...