2013-06-18 103 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類中添加一個選擇方法,將鍵作爲輸入。