在main(...)中初始化类的静态常量数组成员,而不是全局初始化?
问题描述:
假设class Myclass { private: static const int myarray[2]; }
在main(...)中初始化类的静态常量数组成员,而不是全局初始化?
如果我想初始化myarray
我应该把下面的语句在全球范围内:
const int Myclass::myarray[2] = {1,1};
我应该怎么办?如果我想初始化我在阵列的main()(在一些运行时计算值例如在{n1, n2}
其中n1
和n2
是
答
没有什么可以做的。
您可以创建一个成员函数来初始化这些值并调用它。但是,如果它是static
,private
和const
- 那么你甚至无法做到这一点,超出选项。
不能初始化在运行时一个static
会员,你不能从类的外部访问private
成员(除非你交朋友),你不能改变一个const
成员初始化一次。
如果你放弃const
,那么你可以改变它。您仍然需要在全局范围进行初始化,但您可以更改值。
请注意,只要它的private
,您将无法从main
访问它,但是您可以编写一个包装函数成员来为您做(或使其成为public
)。
一个人的常量是另一个人的变量 –