简体   繁体   English

使用辅助函数(C ++)定义运行时已知的全局const变量

[英]Define global const variables known at run-time with helper functions (c++)

I want to define a series of global variables from within a parametrise() helper function like this: 我想从如下的parametrise()帮助函数中定义一系列全局变量:

// helper.h
namespace settings {
  extern const unsigned short something;
}
namespace helper {
  void parametrise(int, char**); // parametrise from command line using boost::program_options
}

// main.cpp
int main( int argc, char** argv) {
  helper::parametrise(argc, argv);
  return 0;
}

// helper.cpp
void helper::parametrise(int, char**) {
  // parse input here
  const unsigned short settings::something = .. // this is what I want to do
}

This code does not compile of course, but there has to be a way around it.. or not? 该代码当然不会编译,但是必须有一种解决方法。

You can make it writable only within that translation unit, and have it externally const, like so: 您可以使其仅在该翻译单元内可写,并使其在外部const内,如下所示:

// helper.h
namespace settings {
  extern const unsigned short& something;
}

void parametrise(int, char**);

// helper.cpp
namespace { namespace settings_internal {
  unsigned short something;
}}

namespace settings {
  const unsigned short& something = settings_internal::something;
}

void parametrise(int, char**) { settings_internal::something = 123; }

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

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