amdek Opublikowano 24 Grudnia 2002 Zgłoś Opublikowano 24 Grudnia 2002 Mam klase abstrakcyjna system w pliku system.h , a w plikach linux.h +linux.cpp i windows.h+windows.cpp deklaracje+definicje klas pochodnych (linux,windows) od klasy system (sa to duze klasy !!)!!!! I teraz w pliku main.cpp chcialbym stworzyc obiekt odpowiedniej klasy pochodnej w zaleznosci od systemu na jakim chce ten program skompilowac !! Tak aby program dzialal na obu OS-ach (wszystkie pliki dla obu OS sa takie same bo w tych klasach pochodny obsluguje roznice miedzy systemami wiec musze tylko wybrac odpowiedni header z klasa pochodna)!! Mam do tego uzyc Makefile !! Jak powinien wygladac makefile(ta najwazniejsza czesc!) i czy powinny byc jakies dyrektywy preprocesora w main.cpp a moze jeszcze gdzies??Jakie !! Jak to zrobic POMOCY!! Od tego zalezy moje zaliczenie z obiektowki :( !!!! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 24 Grudnia 2002 Zgłoś Opublikowano 24 Grudnia 2002 Kazdy kompilator powinien (chyba wszystkie to robia) definiowac symbol, za pomoca ktorego mozna sprawdzic na jakim systemie jest on uzywany. Sprawdza sie to za pomoca dyrektywy #ifdef NAZWA_SYMOBLU nie pamietam jak dokladnie definiiuje to np. VC++, ale mniej wiecej wygladc to bedzie tak: #ifdef WINDOWS #include "windows.h" #else #include "linux.h" #endif Dokladnych nazw tych symboli musisz juz poszukac w dokumentacji do kompilatora. Nie wiem jak to zrobic za pomoca makefile, jedynie tym sposobem.. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
amdek Opublikowano 25 Grudnia 2002 Zgłoś Opublikowano 25 Grudnia 2002 Oki przyjalem ale jest jeszcze jeden problem !!! Jak mam napisac w kodzie : linux w; albo windows w; bo tutaj tez trza wybrac gdy definiuje obiekt!! tutaj juz chyba nie moge uzyc dyrektyw preprocesora wiec jak stworzyc ten obiekt ??!! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 25 Grudnia 2002 Zgłoś Opublikowano 25 Grudnia 2002 yyy, myslalem, ze w tych plikach klasy nazwane sa tak samo, tylko ciala funkcji sa odpowiednie dla odpowiedneigo systemu, a tu jednak i nazwy inne.. no ale i to da sie obejsc... chyba :) Sprobuj: #ifdef WINDOWS #define CLASSNAME windows#else #define CLASSNAME linux#endif...CLASSNAME obiekt;itd...Nie sprawdzalem tego rozwiazania, ale nie widze przeszkod zeby to dzialalo :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
amdek Opublikowano 25 Grudnia 2002 Zgłoś Opublikowano 25 Grudnia 2002 Chyba mysli tymi samymi torami :P Tak jak mowiles VC definiuje WIN32 przy kazdej kompilacji !!opcja /D , ktora wylookalem w opcje projektu, C/C++ ,preprocessor i tam jest caly box z tymi opcjami :) (czegos sie od Ciebie nauczylem :P). A potem troche pomyslalem hihihi i wypocilem to : #if WIN32 #include "Winows.h" #define Typ Windows #else #include "Linux.h" #define Typ Linux #endif main { Typ w; } Hehe i wszystko dzialac powinno bo zapewne pod linuxen GCC nie ma zdefiniowanego WIN32 :P THX Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...