Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna liczba parametrów funkcji

Ostatnio zmodyfikowano 2015-05-30 16:56
Autor Wiadomość
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.
C/C++
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.
P-132968
notabigthreat
» 2015-05-30 15:26:44
Próbowałeś użyć debuggera, by się dowiedzieć, co się dzieje?
P-132970
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?
P-132973
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>.
P-132975
michnius
Temat założony przez niniejszego użytkownika
» 2015-05-30 16:56:09
Dzięki za pomoc! :D
P-132977
« 1 »
  Strona 1 z 1