在main(...)中初始化类的静态常量数组成员,而不是全局初始化?

问题描述:

假设class Myclass { private: static const int myarray[2]; }在main(...)中初始化类的静态常量数组成员,而不是全局初始化?

如果我想初始化myarray我应该把下面的语句在全球范围内:

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

我应该怎么办?如果我想初始化我在阵列的main()(在一些运行时计算值例如在{n1, n2}其中n1n2

在运行时基于所述命令行参数main()中计算的值)
+1

一个人的常量是另一个人的变量 –

没有什么可以做的。

您可以创建一个成员函数来初始化这些值并调用它。但是,如果它是static,privateconst - 那么你甚至无法做到这一点,超出选项。

不能初始化在运行时一个static会员,你不能从类的外部访问private成员(除非你交朋友),你不能改变一个const成员初始化一次。

如果你放弃const,那么你可以改变它。您仍然需要在全局范围进行初始化,但您可以更改值。

请注意,只要它的private,您将无法从main访问它,但是您可以编写一个包装函数成员来为您做(或使其成为public)。

+0

你说得对,我决定把'private'改为'public'(不会有什么大不了),并且删除了'const'(不会太大) 。修改你的答案(根据你以前的评论),所以我可以接受它 – niels

+0

好吧,很高兴帮助:) – littleadv