【问题标题】:Initialize a static const array member of class in main(...) and not globally?在 main(...) 中初始化类的静态 const 数组成员而不是全局?
【发布时间】:2011-09-25 08:20:11
【问题描述】:

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

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

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

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

【问题讨论】:

  • 一个人的 const 是另一个人的变量

标签: c++ arrays class static constants


【解决方案1】:

你无能为力。

您可以创建一个成员函数来初始化这些值并调用它。但是,如果它是 staticprivateconst - 那么你甚至不能这样做并且没有选择。

你不能在运行时初始化static 成员,你不能从课堂外访问private 成员(除非你交朋友),你不能更改const成员一旦初始化。

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

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

【讨论】:

  • 你说得对,我决定将private 更改为public(没什么大不了的)并放弃了const(也没什么大不了的)。修改您的答案(根据您之前的评论),以便我接受它
猜你喜欢
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
相关资源
最近更新 更多