Problem z klasami korzystającymi z siebie na wzajem
Ostatnio zmodyfikowano 2014-12-29 18:08
zzkk Temat założony przez niniejszego użytkownika |
Problem z klasami korzystającymi z siebie na wzajem » 2014-12-28 19:28:56 Po raz pierwszy piszę większy projekt składający się z kilku klas (pewnie robię banalne błędy), nagle kompilator zaczął wyrzucać błędy:
[Error] invalid use of incomplete type 'class pole' [Error] forward declaration of 'class pole' . . . (jest ich dużo takich samych w odniesieniu do każdej klasy korzystającej z klasy 'pole')
Na początku mam zadeklarowane wszystkie klasy, korzystają one z siebie nawzajem (przyjaźń)
Najbardziej dziwi mnie to, że wszystko działało bez zarzutów do bliżej nieokreślonego momentu.
Próbowałam porozdzielać klasy na osobne pliki - bez efektu.
help... ;)
|
|
NopeDotAvi |
» 2014-12-28 19:32:19 podaj trochę kodu. Przy przyjaźni musisz używać tak zwanych "forward declaration", a nie includować pliku z klasą. Np: i |
|
zzkk Temat założony przez niniejszego użytkownika |
» 2014-12-28 20:23:01 mam dwie wersje tego programu, jedna jest jako jeden plik, a druga podzielona na kilka. W tej pierwszej mam poprzedzające deklaracje, w tym drugim to samo. Co do kodu. Pierwszy błąd pojawia się przy kompilacji destruktora klasy 'kolorowa', inne dotyczą pozostałych klas, które też używają 'pole'. Nieco poobcinany kod: class pole; class kolorowa;
class kolorowa { . . . . pole * next; public: . . . . . ~kolorowa() { if( first ) { pole * temp, * temp2; temp = temp2 = first; while( temp ) { delete temp2; temp = temp->next; } temp = temp2 = first = NULL; } } . . . };
class pole { . . . public: pole(); pole( string nazw, char kol, int cen, int opl, int cz ) : nazwa( nazw ) , cena( cen ) , oplata( opl ) , czynsz( cz ) , wlasciciel( NULL ) { postoj = new kolejka; . . . } friend class kolorowa; . . . };
|
|
Monika90 |
» 2014-12-28 21:53:03 Możesz przenieść definicję destruktora ~kolorowa() poniżej definicji klasy pole. Albo po prostu zamienić miejscami definicje klas pole i kolorowa, nie widzę żeby pole zależało od kolorowa, więc pole może być pierwsza. |
|
zzkk Temat założony przez niniejszego użytkownika |
» 2014-12-29 12:19:57 To nie rozwiazuje problemu |
|
DejaVu |
» 2014-12-29 18:08:47 |
|
« 1 » |