Dynamiczna liczba parametrów funkcji
Ostatnio zmodyfikowano 2015-05-30 16:56
michnius Temat założony przez niniejszego użytkownika |
Dynamiczna liczba parametrów funkcji » 2015-05-30 15:17:07 Witam, Na zadanie z C++ mam napisać funkcję, która jako 2 pierwsze argumenty pobiera odpowiednio liczbę rzędów(r) i kolumn(k) macierzy, a jako następne r*k argumentów, które staną się wartościami macierzy. I tu pojawia się problem, bo nie wiem jak to zrobić. Próbowałem używać va_list, ale jedyne co otrzymuję to błąd przy uruchamianiu programu. void setItems( int wX, int wY,...) { va_list params; va_start( params, wX * wY ); for( int i = 0; i < wX; i++ ) { for( int j = 0; j < wY; j++ ) { matrix[ i ][ j ] = va_arg( params, int ); } } va_end( params ); }
Prawdopodobnie popełniam tu jakieś błędy, ale nie widzę innego sposobu w jaki można byłoby rozwiązać ten problem. |
|
notabigthreat |
» 2015-05-30 15:26:44 Próbowałeś użyć debuggera, by się dowiedzieć, co się dzieje? |
|
michnius Temat założony przez niniejszego użytkownika |
» 2015-05-30 16:42:53 No więc debugger wyrzuca mi te dwie linijki: z fragmentu, który jest na stronie matrix[ i ][ j ] = va_arg( params, int ); oraz z maina imtest1.setItems( 4, 1, 249, 24, 82, 3 ); Cała macierz jest wbudowana w szablon klasy cMatrix, dlatego taki zapis. A tak w ogóle to można tego va_list używać przez podanie na początku nie samej ilości, ale tylko tych dwóch czynników? |
|
Monika90 |
» 2015-05-30 16:46:15 Przeczytaj sobie dokumentację makra va_start, to zrozumiesz co robisz źle.
Poza tym, nie należy tego używać, w C++ masz variadic templates albo std::initializer_list<int>.
|
|
michnius Temat założony przez niniejszego użytkownika |
» 2015-05-30 16:56:09 Dzięki za pomoc! :D |
|
« 1 » |