2013-06-18 3 views
1

로컬 변수를 통해 정의 된 (공용) 클래스의 멤버를 호출해야하며 그렇게 할 수 있는지 궁금합니다. 내 문제는 클래스에서 호출 할 변수가 일련의 값에 의존한다는 것입니다. 따라서 멤버 이름을 명시 적으로 입력하는 대신 변수를 사용하여 멤버를 호출해야합니다. 예를 들면 다음과 같습니다.C++ 변수가있는 클래스의 공용 멤버에 액세스

많은 멤버 변수가있는 가정 클래스가 있습니다 (관심있는 모든 변수는 double 유형입니다).

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

: 그럼 내가 다섯 개 잠재적 인 나는 가정 내에서 호출 할 변수,하지만 그들 중 하나가 있다고 가정 해 보자 내 코드는 현재 위의 다섯 가지 용어 중 하나와 같은 내용의 문자열을 생성합니다. 이제 해당 멤버 변수를 호출 - 간접적으로 그렇게 할 수 있습니까?

Assumptions.VariableKey

그러나 VariableKey이 간접 참조로 interpretated이 : 나는 다음 호출을 만들고 싶어 - 그래서 내용이 위의 다섯 개 가지 변수 중 하나 동일하다 "VariableKey"라는 하나 개의 변수가있다.

이것은 실제 문제의 추상화/단순화입니다. 가능한 값의 수가 75와 비슷하기 때문에 가능한 경우 각 변수 개인을 코딩하지 않는 것이 좋습니다.

미리 감사드립니다.

+1

변수를 호출하면 무엇을 의미합니까? 변수의 값에 따라 특정 함수를 호출하는 것을 의미합니까? 문자열을 사용하는 대신 함수에 대한 포인터를 사용하여 적절한 방식으로 함수를 선택할 수 있습니까? 또는 문자열을 함수에 매핑 할 수 있습니까? 그것은 가능한 해결책일까요? 당신은 전에 모든 기능을 알고 있습니까? 아마도 일부 샘플 코드가 도움이 될 것입니다. –

답변

2

C++에서는 직접 할 수 없습니다. 보다 일반적인 접근 방법은 사용할 변수를 나타내는 열거 형을 설정하고 설정하는 것입니다. 그런 다음 값의 배열/벡터를 가지며 열거자는 해당 컨테이너에 대한 인덱스 역할을합니다.

문자열을 특정 값으로 매핑하는 맵을 만들 수도 있지만 추가 오버 헤드가 추가 될 수 있습니다.

+0

설명 해 주셔서 감사합니다. 매우 도움이됩니다. 그것은 나를 위해 더 많은 일을하지만, 대답을 알게되어서 기쁩니다. 불행 : – brentf

0

당신이하려는 것은 "reflection"이며, C++에는 네이티브 지원이 없습니다. library을 통해 추가 할 수도 있지만 "Stem"멤버 변수를 map 문자열에 두는 것이 더 쉽습니다.

+0

다시, 매우 도움이됩니다 - 고마워요. – brentf

0

키를 입력으로 사용하여 Assumption 클래스에 선택 방법을 추가해야합니다.

관련 문제