2013-06-04 8 views
-3

구조체 배열을 초기화하려고합니다. 구조체는 모든 정수 값을 포함하고 나는 그것을이 같은 먼 길 한 0구조체 배열 초기화

처음에 초기 값을 모두 설정하려는 :

void initializeTcsPointer(TestCaseSet* tcsPointer) 
{ 
    for (int i = 0; i < MAX_NUMBER_TEST_CASE_SETS; i++) 
    { 
     tcsPointer[i].numPass = 0; 
     tcsPointer[i].numFail = 0; 
     tcsPointer[i].numPWU = 0; 
     tcsPointer[i].numFWU = 0; 

     tcsPointer[i].numRFA_Pass = 0; 
     tcsPointer[i].numRFB_Pass = 0; 
     tcsPointer[i].numRFA_PWU = 0; 
     tcsPointer[i].numRFB_PWU = 0; 
     tcsPointer[i].numRFA_FWU = 0; 
     tcsPointer[i].numRFB_FWU = 0; 
     tcsPointer[i].numRFA_Fail = 0; 
     tcsPointer[i].numRFB_Fail = 0; 

    } 
} 

그것은 작동을하지만, 그때가 원 짧은 방법 :

void initializeTcsPointer(TestCaseSet* tcsPointer) 
{ 
    TestCaseSet newSet = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
    for (int i = 0; i < MAX_NUMBER_TEST_CASE_SETS; i++) 
    { 
     tcsPointer[i] = newSet;  
    } 
} 

어떤 방식으로 작동하지 않습니다. 왜 왔는지 궁금하네요?

@ Lol4t0에서 언급 한 바와 같이
+0

작동하지 않는 기능은 무엇입니까? – Djon

+0

코드를 실행할 때 Visual Studio에서 디버그 오류가 발생합니다. – Splaty

+4

구성원을 0으로 초기화하는 'TestCaseSet'의 기본 생성자를 만듭니다. – Lol4t0

답변

1

, 당신 구조체에 대한 ctor에 추가 :

struct TestCaseSet { 

    TestCaseSet() 
    : numPass(0), numFail(0), numPWU(0) {} 

}; 

위처럼 다른 변수를 추가합니다.

+0

유형이 이처럼 집합체 또는 POD가 아닐 것이란 점을 지적 해 두는 것이 좋습니다. 이것은 중요하지 않을 수도 있지만 지적 할만한 가치가 있습니다. – juanchopanza

+0

-1 죄송 합니다만 이것이 실패한 이유는 설명하지 않습니다. –

+0

@Adriano 오, 알았어. 그러나 OP는 어떤 오류가 발생했는지 알려주지 않았다. OP에서 제공하는 코드는 정상적으로 보입니다. 그래서 코드에서 알 수 없었습니다. 내가 할 수있는 유일한 방법은이 초기화를 수행하는 C++ 방법을 제공하는 것입니다. – gongzhitaao