繁体   English   中英

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

[英]Initialize a static const array member of class in main(…) and not globally?

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

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

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

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

你无能为力。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM