这是一个简单的问题,但我想就如何解决它提出建议。我有一个带有构造函数Policy
的{{1}}类。
根据Policy::Policy(const int& mode)
的值,mode
对象可以具有不同的行为和特征。例如,假设有3种可能的模式来运行与Policy
,mode=1
和mode=2
相对应的程序。现在,任何时候都不会有mode=3
个具有不同模式值的对象。
因此,对我来说,有一个变量Policy
是有道理的,这样所有static int Policy::MODE
个对象都知道它们应该在哪个模式下运行。创建的第一个Policy
对象将在其构造函数中设置此静态类变量的值。然后,如果尝试使用不同的值Policy
创建任何其他Policy
对象,则实例化将以错误退出(因为这不应该发生)
有关如何解决此问题的任何建议?
[以下针对评论请求添加的其他说明。]
该计划旨在优化疾病筛查政策。每个mode
对象代表一个筛选策略,并具有许多必要的功能,以便跟踪反映在群体中实施该策略的影响的统计数据。在优化的说法中,每个筛选政策都是决策变量的向量,通过使用疾病的自然历史模型模拟政策来估计目标函数。
Policy
对象需要能够无缝地适应多个复杂的优化框架。它不仅需要能够代表疾病筛查政策,还能够代表可用于测试优化算法是否运作良好的任何数量的标准测试问题。基于Policy
类的MODE
值更改的功能/特征如下:(1)用于评估策略的模拟模型,(2)构建器中设置的代码诸如决策变量向量的长度,以及(3)用于显示给定策略的信息及其估计性能的代码。
如果只有两种不同的运行模式,那么这里就会出现很多不相关的东西:
Policy
在较高级别,您可以说每个模式值代表解决方案与估算器的配对。
答案 0 :(得分:1)
你是否在寻求类似的东西:
static int Policy::MODE=-1;
Policy::Policy(const int& mode) {
if (MODE==-1) {
MODE=mode;
}
else {
if (mode!=MODE) {
cout <<"mode mismatch "<<...<<endl;
exit (1); // or throw something, set some flags, depending on your needs
}
}
}