2016-10-28 1 views
-1

다음과 같은 코드에서 액세스하려는 헤더에 숫자가 몇 개 있습니다.동적 이름을 가진 클래스의 멤버에 액세스하는 방법 Cocos2d-x C++

auto number = dynamic_cast<Int*>(this->findTheMemberWithName("level%i",i)); 

C++에서 이런 일을 할 수있는 방법이 있나요 : 다음 구현

_number0 = 10; 
_number1 = 20; 

int i; 
for(i=0; i<2, i++){ 
    auto number = _number+i; //This is where I'm lost, how to do the right part right in order to get this int by its name created from a String + an Integer. 
    CCLOG("Number: %i", number); //Output Number: 10 // Number: 20 
} 

나는이 같은 의사 코드에 생각에

int _number0; 
int _number1; 

?

모든 가이드 라인을 읽어 주셔서 감사합니다. 인사말.

+0

'_number'를 배열로 만들고 끝에있는 숫자를 색인으로 사용 하시겠습니까? 예를 들어'int _number0'과'int _number1' 대신'int _number [2]'나'std :: array _number'를 사용할 수 있습니다. 그런 다음'_number [0] = 10;'과'_number [1] = 20; '을 할당하십시오. 이것으로'auto number = _number [i];'는 루프의 각각에 접근 할 수있게 해준다. –

+0

아니면'std :: unordered_map _numbers;'를 사용하고, 각각에 대해 'auto number = _numbers [ "_ number"+ std :: to_string (i)]; '. –

+0

이 중에서 첫 번째 것은 당신이하고자하는 바에 따라 _probably_ 더 효율적입니다. –

답변

0

std :: map이 귀하의 요구 사항을 충족시켜야한다고 생각합니다.

P .: 실제로 배열이나 벡터를 사용하여 작업을 수행하는 것이 어떻습니까? CPP에서 매개 변수 이름을 구성하는 것은 실제로 좋은 생각이 아닙니다.

관련 문제