ďťż

Ładny brzuch

witam

problem wygląda nastepująco: napisałem sobie klase Lista i jej deklaracje i funkcje umieściłem w plikach KlasaLista.h oraz KlasaLista.cpp. teraz pojawia sie problem bo gdy kompiluje wywala błąd że w pliku KlasaLista.h są nie zadeklarowane symbole wszystkie te które sa moimi stałymi w Unit1.h
stałe deklaruje przez const nie #define

to dodam jeszcze 2 pytanie podobne jak zrobić aby stałe były widoczne w bibliotece DLL dołączanej dynamicznie (czy trzeba je wyeksportować jakoś czy utworzyć wskaźniki na nie) ale to na marginesie



w tych plikach gdzie używasz stałej const muszisz dodać extern const typ nazwa_stalej;

zrobiłem tak i teraz wywala błąd:
E2313 Constant expression required w helpie pisze ze to znaczy
Arrays must be declared with constant size.
This error is commonly caused by misspelling a #define constant.

no a właśnie te stałe służą mi do deklarowania rozmiaru tablic

z góry sory za post pod postem, ale nie chciałem zakładac nowego tematu, wszystkie stałe zlikwidowałem (tak na próbe) i w ich miejsce wpisałem te konkretne wartości, teraz wywala mi błąd
Error E2176: Too many types in declaration nie moge dojść co go powoduje



Szczerze to sprawdziłem dopiero teraz to co napisałem wcześniej jak napisałeś że nie działa. Myślałem, że żadnych problemów nie będzie. Nie wiem dlaczego nie działa na constach. Nie przypominam sobie aby extern miało jakieś specjalne wymogi. Zapewne to jakieś moje głupie niedopatrzenie... spróbuje to rozwiązać :)
Usuwając przydomek const wszystko jest wporządku... dziwne. Zaraz poszperam w Symfonii :P
Użytkownik KlyYmek edytował ten post 11 luty 2007, 17:03
niestety są dalej błędy, tym razem znowu
E2313 Constant expression required musze jeszcze raz przeanalizować te moją klase. zrobiłem ją na wzór tej z "Pasji C++" Grębosza, troche ją przerobiłem mianowicie w tej strukturze węzeł dałem kilka moich tablic i zmiennych i nie wiem czy dobrze zrobiłem, dopisałem tez szereg funkcji odczytujących i wpisujących dane
na wszelki wypadek jak wyglada ta funkcja załączam//plik KlasaLista.h------------------------------------------------------------------- #ifndef KlasaLista #define KlasaLista extern int panSzer; extern int panWys; extern int SGx; extern int SGy; //--------------------------------------------------------------------------- class Lista { struct wezel { float *tabZnak[SGx][SGy][panSzer][panWys]; bool *tabStan[SGx][SGy]; bool *bModified; int *tabUpDown[SGx][SGy]; int *tabSize[SGx][SGy]; char *Opis[15]; char *nameFont[20]; int *index; int *pozX; int *pozY; int *wskobj; wezel *nastepca; wezel() : nastepca(NULL), wskobj(NULL) { } }; wezel *pierwszy; wezel *ostatni; wezel *wybrany; public: Lista() { pierwszy = wybrany = ostatni = NULL; } ~Lista(); void Wstaw(int &obj); void Usun(); void DelPierwszy(); void DelOstatni(); void DelSrodkowy(); void SetpozY(int y); void SetpozX(int x); void Setindex(int x); void SettabZnak(int X, int Y, int x, int y, float wartosc); void SettabStan(int x, int y, bool wartosc); void SetbModified(bool wartosc); void SettabUpDown(int x, int y, int wartosc); int GetpozY(); int GetpozX(); int Getindex(); float GettabZnak(int X, int Y, int x, int y); bool GettabStan(int x, int y); bool GetbModified(); int GettabUpDown(int x, int y); } //--------------------------------------------------------------------------- #endif oraz plik KlasaLista.cpp z wszystkimi funkcjami
//--------------------------------------------------------------------------- #pragma hdrstop #include <stdlib.h> #include "KlasaLista.h" //--------------------------------------------------------------------------- void Lista::Wstaw(int &obj) { wezel *nowy = new wezel; nowy->index = &obj; if(!pierwszy) pierwszy = nowy; else ostatni->nastepca = nowy; ostatni = nowy; } //--------------------------------------------------------------------------- void Lista::Usun() { if(wybrany==pierwszy) DelPierwszy(); else if(wybrany==ostatni) DelOstatni(); else DelSrodkowy(); } //--------------------------------------------------------------------------- void Lista::DelPirwszy() { pierwszy = pierwszy->nastepca; delete wybrany; wybrany = pierwszy; } //--------------------------------------------------------------------------- void Lista::DelOstatni() { wezel *poprz; poprz =PoprzWezel(wybrany); poprz->nastepca = NULL; ostatni = poprz; delete wybrany; wybrany = NULL; } //--------------------------------------------------------------------------- void Lista::DelSrodkowy() { wezel *poprz; poprz = PorzWezel(wybrany); poprz->nastepca = wybrany->nastepca; delete wybrany; wybrany = poprz; } //--------------------------------------------------------------------------- wezel *Lista::PoprzWezel(wezel *odnosny) { wezel *goniec; for(goniec=pierwszy; goniec->nastepca!=odnosny; goniec=goniec->nastepca); return goniec; } //--------------------------------------------------------------------------- Lista::~Lista() { for(wybrany = pierwszy; wybrany; ) { wezel *pamietnik; pamietnik = wybrany->nastepca; delete wybrany; wybrany = pamietnik; } } //--------------------------------------------------------------------------- void Lista::SettabZnak(int X, int Y, int x, int y, float wartosc) { wybrany->tabZnak[X][Y][x][y]=wartosc; } //--------------------------------------------------------------------------- void Lista::SettabStan(int x, int y, bool wartosc) { wybrany->tabStan[x][y]=wartosc; } //--------------------------------------------------------------------------- bool Lista::GettabStan(int x, int y) { return *(wybrany->tabStan[x][y]); } //--------------------------------------------------------------------------- float Lista::GettabZnak(int X, int Y, int x, int y) { return wybrany->tabZnak[X][Y][x][y]; } //--------------------------------------------------------------------------- void Lista::SetpozY(int y) { wybrany->pozY=y; } //--------------------------------------------------------------------------- void Lista::SetpozX(int x) { wybrany->pozX=x; } //--------------------------------------------------------------------------- int Lista::GetpozX() { return wybrany->pozX; } //--------------------------------------------------------------------------- int Lista::GetpozY() { return wybrany->pozY; } //--------------------------------------------------------------------------- void Lista::Setindex(int x) { wybarany->index=x; } //--------------------------------------------------------------------------- int Lista::Getindex() { return wybarany->index; } //--------------------------------------------------------------------------- void Lista::SetbModified(bool wartosc) { wybrany->bModified = wartosc; } //--------------------------------------------------------------------------- bool Lista:GetbModified() { return wybrany->bModified; } //--------------------------------------------------------------------------- void Lista::SettabUpDown(int x, int y, int wartosc) { wybrany->tabUpDown[x][y]=wartosc; } //--------------------------------------------------------------------------- int Lista::GettabUpDown(int x, int y) { return wybrany->tabUpDown[x][y]; } //---------------------------------------------------------------------------

Dałeś extern, ale gdzie na tego pliku zewnątrz masz to zdefiniowane bo ja nie widzę? :>

poddałem sie, problem jest gdzieś w mojej klasie. mam tam jedną tablice 4-wymiarową i jeszcze 2 inne i wydaje mi sie ze wiekszego sensu nie ma robienia tego za pomoca listy. jeden problem tworzy następny, pozostawiłem to tak jak miałem wcześniej (czyli statyczną tablice struktur).
ale dzięki KlyYmek za pomoc, nie wiem czemu nie widziało tych stałych, w pliku Unit1.h zinkludowałem ten plik z moją klasą

EOT


poddałem sie, problem jest gdzieś w mojej klasie. mam tam jedną tablice 4-wymiarową i jeszcze 2 inne i wydaje mi sie ze wiekszego sensu nie ma robienia tego za pomoca listy. jeden problem tworzy następny, pozostawiłem to tak jak miałem wcześniej (czyli statyczną tablice struktur).
ale dzięki KlyYmek za pomoc, nie wiem czemu nie widziało tych stałych, w pliku Unit1.h zinkludowałem ten plik z moją klasą
EOT

Ja sprawdzałem u siebie na prostym programiku i też nie chodziło (nie zwalaj wszystkiego na swoją klase :P). Musi to być błąd merytoryczny... mam nadzieję, że ktoś tu napisze o co biega bo ja też nie mogę dojść do ładu :)
Jak Ci w ostatecznośći bardzo zależy to możesz w tym module w którym masz stałą przypisać jej wartość do zwykłej zmiennej i wtedy "wypakować" ją w innym module, bo tak jak mówię - u mnie na tych zmiennych bez const jest cacy :)
Użytkownik KlyYmek edytował ten post 12 luty 2007, 20:50
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •