2013-07-15 3 views
-1

내 코드를 실행하면 : 세대 'C++ 여러 초기화 오류

int a; 
int b; 
int c; 

int x; 
int y; 
int z; 

int main() 
{ 
    std::random_device rd; 
    std::mt19937 gen(rd()); 
    std::uniform_int_distribution<int> dis(1, 10000000); 
    int a = dis(gen); 
    printf("%d", a); 

    std::random_device rd; 
    std::mt19937 gen(rd()); 
    std::uniform_int_distribution<int> dis(1, 10000000); 
    int b = dis(gen); 
    printf("%d", b); 

그것은'오류 C2374은 '생성을 재정의; 여러 초기화 '오류가 발생했습니다. 이 문제를 어떻게 해결할 수 있습니까? 2 개의 다른 숫자를 생성하려면 코드의 일부만 사용해야합니까? 또한 세 번째 변수에 1-10000000을 1-20으로 변경하려면 어떻게해야합니까?

+1

처음 세 줄을 반복하지 마십시오. 당신은 이미 발전기를 가지고 있습니다. 단지 다음 번호를 원합니다. – Dave

답변

1
std::mt19937 gen(rd()); 
... 
std::mt19937 gen(rd()); 

gen의 초기화를 두 번하지 마십시오. 한 번 해봐. 서로 다른 변수를 사용하십시오. 또한

는 전역 변수 a, b, c, x, yz를 정의하지 않습니다. 그들은 전혀 쓸모가 없다. 가능한 모든 변수를 로컬 변수로 정의하십시오.