1

我需要通过局部变量调用已定义(公共)类的成员,我想知道该怎么做。我的问题是在类中调用哪个变量取决于一系列值,所以我真的需要使用变量来调用成员,而不是明确输入它的名称。例如:

我有类 Assumptions,有许多成员变量(所有感兴趣的都是 double 类型)。因此,假设我想在 Assumptions 中调用五个潜在变量,但只有其中一个:

  1. 变量Stem_One
  2. 变量Stem_Two
  3. 变量Stem_Three
  4. 变量Stem_Four
  5. 变量Stem_Five

我的代码当前生成一个字符串,其内容等于上述五个术语之一 - 现在我只需要调用该成员变量 - 我可以间接这样做吗?所以我有一个名为“VariableKey”的变量,其内容等于上述五个变量之一 - 我想进行以下调用:

Assumptions.VariableKey

但是将 VariableKey 解释为间接引用。

这也是我真正问题的抽象/简化 - 可能值的数量更像是 75,所以我想尽可能避免编码每个变量个体。

提前致谢!

4

3 回答 3

2

您不能直接在 C++ 中执行此操作。更正常的方法是有一个枚举来指示要使用的变量,并设置它。然后你有一个值的数组/向量,枚举器充当该容器的索引。

您还可以创建一个将字符串映射到特定值的映射,但这可能会增加额外的开销。

于 2013-06-18T21:08:48.520 回答
0

What you're trying to do is called "reflection", and C++ doesn't have native support for it; you could look at adding it via library, but it'd be easier to just put your "Stem" member variables into a map of string to double instead.

于 2013-06-18T21:12:39.037 回答
0

您应该在 Assumption 类中添加一个选择方法,将键作为输入。

于 2014-08-21T22:53:20.883 回答