2013-06-04 3 views
-3

Я пытаюсь инициализировать массив структур. структура содержит все целые значения, и я хотел бы установить их начальные значения всех 0.Инициализация массива struct

Сначала я сделал это длинный путь, как это:

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, Добавить CTOR для Вас структуры:

struct TestCaseSet { 

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

}; 

Добавьте другие переменные, как и выше.

+0

Возможно, стоит отметить, что тип не будет представлять собой совокупность или POD, как это. Это не имеет значения, но стоит отметить. – juanchopanza

+0

-1 Извините, но это не объясняет, почему он терпит неудачу. –

+0

@ Адриано О, я знал. Но ОП не предоставил какую-либо ошибку. Код, предоставляемый OP, кажется прекрасным. Поэтому я не мог сказать из кода. Единственное, что я мог сделать, это предоставить C++ способ сделать это init :) – gongzhitaao

Смежные вопросы