2013-06-04 122 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;  
    } 
} 

哪一個不行。我想知道怎麼回事?

+0

什麼不行? – Djon

+0

運行代碼時,我從Visual Studio中收到調試錯誤 – Splaty

+4

爲TestCaseSet設置默認構造函數,將成員初始化爲0 – Lol4t0

回答

1

正如@ Lol4t0指出,添加一個構造函數爲您的結構:

struct TestCaseSet { 

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

}; 

添加其他變量,如上述。

+0

值得指出的是,這種類型不會是像這樣的聚合或POD。這可能無關緊要,但值得指出。 – juanchopanza

+0

-1對不起,但這並沒有解釋爲什麼它失敗。 –

+0

@Adriano哦,我知道。但OP沒有提供發生什麼錯誤。由OP提供的代碼看起來很好。所以我無法從代碼中看出來。我唯一能做的就是提供一個C++方法來完成這個init :) – gongzhitaao