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

时间:2011-09-25 08:20:12

标签: c++ arrays class static const

假设class Myclass { private: static const int myarray[2]; }

如果我想初始化myarray,我应该将以下语句放在全局范围内:

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

如果我想在main()中初始化我的数组(在某些运行时计算的值,例如在{n1, n2} n1n2是运行时在main()中根据命令行参数计算的值)

1 个答案:

答案 0 :(得分:2)

你无能为力。

您可以创建一个成员函数来初始化值并调用它。但是,如果它是staticprivateconst - 那么你甚至无法做到这一点,也不能选择。

您无法在运行时初始化 static成员,您无法从课外访问private成员(除非您交到朋友),并且您无法更改初始化后const成员。

如果您放弃const,则可以更改它。您仍然必须在全局范围初始化,但您可以更改值。

请注意,只要其private,您将无法从main访问它,但您可以编写一个包装函数成员来为您执行此操作(或使其成为public。 1}})。