iekompletny typ podczas inicjalizacji obiektu

Odpowiedz Nowy wątek
2006-10-05 11:39
0

hej witam wszystkich. mam pewien problem zwiazany z inicjalizacja obiektu.

mam taka oto klase:

class gaussjo 
{ 
      int rozmiar ; 

      double ** macierz ; 
      double ** macierz_A ; 
      double * macierz_B ; 

      public : 

             gaussjo(double ** M, int Roz) ; 

}; 

gaussjo :: gaussjo(double ** M, int Roz) 
{ 
       rozmiar = Roz ; 

       macierz_A = new double * [rozmiar] ;      // tworzenie tablicy wielowymiarowej 
       for(int i = 0; i < rozmiar; i++)           // macierzy wspolczynnikow !!!! 
       macierz_A[i] = new double [rozmiar] ; 

       macierz_B = new double [rozmiar]    ;    // tworzenie macierzy wynikow 

       int i = 0, j = 0 ; 

       for(i=0; i < rozmiar; i++) 
       {                
              for(j = 0; j < rozmiar; j ++) 
              {                                     // przypisanie 
                    macierz_A[i][j] = M[i][j];              
              } 

              macierz_B[i] = M[i][rozmiar] ;       // przypisanie do tablicy wynikow 
       }                                          // wynikow z kolumny "dodatkowej"  rownania*/ 
}

i chce stworzyc obiekt za pomoca instrukcji :

gaussjo f (macierz,rozmiar);

gdzie macierz jest double ** a rozmiar int.

wyswietla mi komunikat o bledzie w konstruktorze i ze obiekt zostal zainicjalizowany ale ma niekompletny typ. co to znaczy i jak temu zaradzic?

pozdr.

Pozostało 580 znaków

2006-10-05 11:43
0

gaussjo f = gaussjo(macierz,rozmiar);

Pozostało 580 znaków

2006-10-05 11:47
0

tak samo a nawet wiecej.

dalej niekompletnty tym a dodatkowo komunikat o nieprawidlowym uzyciu struktury gaussjo
w klasie w ktorej inicjalizuje ten obiekt.

Pozostało 580 znaków

2006-10-05 16:11
0
macierz_B[i] = M[i][rozmiar] ;

Wychodzisz poza zakres tablicy.

Pozostało 580 znaków

2006-10-05 16:52
0

raczej nie. ta macierz M jest tworzona w innym obiekcie i ma postac:

double macierz[rozmiar][ (rozmiar + 1) ] ;

a konkretniej ma takie wartosci:

       double tablica_temp[]={2, 8, 9, 7,  8,              
                              5, 8, 3, 9,  2,              
                              2, 7, 9, 4,  6,              
                              7, 2, 4, 9,  2, };

to co robie w tej petli to rozdzielam ostatnia kolumne z pozostala czescia tabeli na dwie inne tabele.

nie przekraczam zakresu - przynajmniej jezeli dobrze cie zrozumialem.

zakladam ze moze byc jakis blad przy przesylaniu argumetow do konstruktra.

Pozostało 580 znaków

2006-10-06 11:43
0

ta macierz M jest tworzona w innym obiekcie [...]

Czyli, jak rozumiem jest tworzona tak samo jak macierz_A??? Z drugiej strony, jeżeli ta macierz M jest tworzona w innym obiekcie, to bezpieczniej będzie jak przekażesz ten "inny obiekt" do konstruktora gaussjo przez (const) referencję.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0