【发布时间】:2013-08-15 02:34:34
【问题描述】:
假设我有一个类 Param 定义如下:
class Param {
public:
std::vector<double> lb;
std::vector<double> mid;
std::vector<double> ub;
int level;
};
该类的目的是定义下限和上限(分别为lb 和ub)以及不同参数的中点估计值。假设对于给定的对象,lb、mid 和 ub 具有相同数量的元素。
现在,如果level<0,我想使用lb 估计。如果level==0,我想使用mid 估计。否则(如果level>0),我想使用ub 估计值。
我的问题是:我怎样才能创建一个单独的成员函数(或类似于引用成员变量的东西),它会根据值自动“传递”给适当的成员 std::vector<double> level?
例如,如果我有一个函数
void f(const std::vector<double>& X);
或
void g(std::vector<double>& X);
我希望能够做这样的事情:
Param myParam;
// set values of myParam.lb, myParam.mid, and myParam.ub, and myParam.level
f(myParam.__?__);
g(myParam.__?__);
【问题讨论】:
-
为什么
level还是Param的成员? -
@ChrisCulter 因为我可能想更改我正在使用的参数估计值,而 level 反映了我正在使用的估计值。 (也许我误解了你的问题......)
-
显然我不知道上下文,但它似乎不需要是与数据相关的持久状态。它可以只是使用
Param的任何代码中的局部变量吗? -
@ChrisCulter 绝对可以。但是
Params有20到30个,它们的不同组合一次使用不同的levels。上下文是各种Params组成一个数学模型,我需要对模型的参数进行敏感性分析。