에서 언급 한 바와 같이 당신은 매크로를 사용하여이 작업을 수행 할 수 있습니다,하지만 난 정말 좋은 아이디어라고 생각하지 않습니다. 대신 배열을 사용하지 않는 이유는 무엇입니까? 배열을 사용하면 원하는 인덱스를 참조 할 수 있으므로 var1
대신 var2
, var3
등이됩니다. var[0]
, var[1]
, var[2]
등이됩니다 ... 어쨌든 훨씬 더 많은 C++가 있습니다.
배열을 사용하는 경우또는 std::array
과 같은 C++ 제안 컨테이너 클래스 중 하나에서 생각하는 것이 좋습니다. 벡터에 정수 변수의 간단한 배열을 갖기 위해서는 std::vector<int> intVec
과 같이 선언하고, intVec.at(0)
과 같은 첫 번째 요소를 추출하는 at
함수를 사용하여 특정 요소를 추출하십시오. 거의 모든 다른 접근 방법을 매크로보다 많이 사용하십시오. 여기에 변수를 전달하여 그래서 루프를 사용하여,
#define var(x) var##x
var(1) = 2; // resolves to var1 = 2;
매크로 그러나 컴파일 시간은 다음과 같습니다
는이 같은 매크로를 만들 필요가있을 것이다, 매크로에서 그것을 할 것을 미루어 , 당신이 기대하는대로 작동하지 않습니다. 그래서
int x = 1; var(x) = 2;
를 호출하면 2
var1
설정이 아니라, 또 다른 코드 이상의 오류가 발생하기 쉬운하고있다
varx
매크로 솔루션은 하나가 당신의 적은 읽기를하고, 단점의 번호와 함께 제공 2로 설정하려고하지 것이다 마지막으로, 왜 "C++ way"에서 멀어 지나요?
당신이 할 수있는 ' C++에서 이와 같은 변수 이름을 생성하십시오. 'int's의 ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector)를 원할 것입니다. 다음과 같이 접근 할 수 있습니다 :'myInts [x]' . – BoBTFish
for 루프는'x'를 초기화하지 않으므로 잘 작동하지 않습니다. –
(SOLVED)를 추가하지 말고 "thank you"의견을 게시하지 마십시오. 대신, upvote하고 당신을 도운 대답을 받아들입니다. –