2016-10-19 28 views
5

Obecnie pracuję nad projektem, w którym chcę przekonwertować wpisy pliku CSV na wektor obiektów. Dlatego napisałem funkcję, która konwertuje tablicę struktur w wektorze. Problem polega na tym, że teraz moja funkcja działa tylko wtedy, gdy użytkownik wprowadzi właściwy rozmiar tablicy jako dodatkowy parametr, ale jeśli wprowadzi wyższy numer, zostanie zgłoszony wyjątek, ponieważ funkcja próbuje odczytać wpis tablicy, który nie istnieć. Teraz chcę wiedzieć, czy jest tak, że mogę określić rozmiar tablicy struktur w mojej funkcji. Próbowałem już sizeof(array)/sizeof(array[0]), ale to nie działa.Określa rozmiar tablicy struktur używanej jako parametr

Oto funkcja mówię:

BANKMANAGEMENT_API int initAccounts(ACCOUNT accArray_[], const int numOfAcc_) 
{ 
    BankmanagementClass *myBankmanagement = BankmanagementClass::createBankmanagementClass(); 

    for (int i = 0; i < numOfAcc_; i++) 
    { 
     ACCOUNT acc = accArray_[i]; 
     Account* newaccount = Account::accountStruct2Obj(&acc); 
     myBankmanagement->setNextAccountId(myBankmanagement->determineNextId(newaccount->getAccountId(), myBankmanagement->getNextAccountId())); 
     myBankmanagement->addAccount(newaccount); 
    } 
    LogInfo("Account Vector was initialized with data from Csv File."); 
    return 0; 
} 

Chcę pozbyć parametru numOfAcc_ tak, że użytkownik nie może wejść w złym rozmiarze.

To jest dla biblioteki dll z interfejsem C.

+1

Użyj 'std :: vector'. Dlaczego go nie używasz? –

+0

** - 1 ** Problem dotyczy kodu wywołującego, który nie został wyświetlony, a nie kodu, który pokazałeś. Głosowanie na zakończenie jako brak powtarzalnego przykładu. –

+0

Awangardy, proszę wyjaśnić swoje przeboje. Jak sądzisz, dlaczego to pytanie byłoby przydatne dla kogoś z Google'a? Nie widzę tu niczego użytecznego. –

Odpowiedz

0

Nie ma sposobu na określenie rozmiaru tablicy. Jeśli masz pod kontrolą wypełnianie accArray, możesz użyć znacznika końcowego i sprawdzić ten stan w pętli for.