2013-06-18 137 views
1

我需要通过局部变量调用已定义(公共)类的成员,并且我想知道如何才能这样做。我的问题是,在类中调用哪个变量依赖于一系列值,所以我真的需要使用变量来调用成员,而不是用明确的方式输入它的名字。例如:C++访问具有变量的类的公共成员

我有类假设,与许多成员变量(所有的兴趣是类型双)。所以我们可以说我有我想假设中调用五种可能的变量,但其中只有一个:

  1. VariableStem_One
  2. VariableStem_Two
  3. VariableStem_Three
  4. VariableStem_Four
  5. VariableStem_Five

我的代码目前生成一个字符串,其内容等于上述五个术语之一 - 现在我只需要调用该成员变量 - 我可以间接吗?所以,我有所谓的“VariableKey”,其内容等于上述五个变量中的一个一个变量 - 我想作以下电话:

Assumptions.VariableKey

但有VariableKey interpretated作为间接引用。

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

在此先感谢!

+1

你是什么意思调用一个变量?你的意思是基于变量的值调用特定的函数吗?你可以 - 而不是使用字符串 - 使用指向函数的指针 - 并选择适当的函数?或者,你可以将字符串映射到函数吗?这是一个可行的解决方案吗?你事先知道所有功能吗?也许一些示例代码会有所帮助。 –

回答

2

你不能直接在C++中做到这一点。更常用的方法是使用枚举来指示要使用哪个变量,并设置该变量。然后你有一个数组/值的向量,并且枚举器充当该容器的索引。

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

+0

谢谢你的解释 - 这是非常有用的。不幸的是,它使我更多的工作,但很高兴知道答案:) – brentf

0

你要做的事叫做"reflection",C++没有原生支持;你可以看看通过library来添加它,但是将字符串的map的“Stem”成员变量加倍可能更容易。

+0

再次,相当有益 - 谢谢。 – brentf

0

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