Ĺadny brzuch
Nie znam sie za bardzo na fachowym programowaniu ale chcialbym zrobic osobny plik do implementacji funkcji ktore wczesniej zadeklarowalem.
Tzn w oknie glownym projektu .cpp robie deklaracje a pozniej implementacje chcialbym zrobic w innym pliku zeby nie robil mi sie balagan. Tylko nie wiem jak to zrobic w jakim pliku i jak to polaczyc.
Czy jest to w ogole mozliwe i jak to zrobic?
Za pomoc dziekuje mih00
Jeżeli deklaracje funkcji/klasy to zdecydowanie w pliku *.h, co do implementacji to wygląda to tak:
- tworzysz nowy plik (tym razem *.cpp);
- na początku include'ujesz plik nagłówkowy z deklaracjami;
- ...i ew. inne pliki nagłówkowe;
- a potem implementacja funkcji
Mogłoby to wyglądać tak:
CKlasa.h
class CKlasa { private: int i; bool b; public: CKlasa(); CKlasa(int, bool); int setInt(int); int getInt(); . . . };
CKlasa.cpp
CKlasa::Cklasa() { i=0;b=false; } CKlasa::Cklasa(int i,bool b) { this.i=i;this.b=b; } int CKlasa::setInt(int i) { return (this.i=i); } int CKlasa::getInt() { return i; }
I teraz kiedy tylko chcesz skorzystac ze swojej klasy to po pierwsze we własciwe miejsce include'ujesz nagłówek a do całego projektu (Project->Add...) dodajesz implementacje czyli plik *.cpp
KoDo
GG:3857769
Nie musi wcale brac Project->Add... wystarczy ze na poczatku pliku uzyje dyrektywy #include "costam.h".
>BaR_TeK<
Language: C++/DirectX/WinAPI
IDE: MS Visual C++
cytat:bart_89 napisał:
Nie musi wcale brac Project->Add... wystarczy ze na poczatku pliku uzyje dyrektywy #include "costam.h".
Dla ścisłości, kiedy tworzy nową klasę (lub ogólnie definicję+implementację) to klasa ta automatycznie zostaje dodana do biezącego projektu (jeśli taki w ogóle jest otwarty) wiec tu nie ma problemu i nie musi juz dodawac drugi raz tego samego.
W przypadku natomiast kiedy zajdzie potrzeba wykorzystania tej klasy w innym projekcie (a często tak sie zdarza bo przeciez w jakims celu te klasy tworzymy...zeby sobie ułatwić :cheesy: ) to bezwarunkowo musi dodac plik *.cpp do projektu (Project-->Add To Project...) bo inaczej zwróci błąd przy linkowaniu.
I tu juz nawet nie ma znaczenia jaki to kompilator, implementacja zawsze musi byc dostraczona.
KoDo
GG:3857769
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Tzn w oknie glownym projektu .cpp robie deklaracje a pozniej implementacje chcialbym zrobic w innym pliku zeby nie robil mi sie balagan. Tylko nie wiem jak to zrobic w jakim pliku i jak to polaczyc.
Czy jest to w ogole mozliwe i jak to zrobic?
Za pomoc dziekuje mih00
Jeżeli deklaracje funkcji/klasy to zdecydowanie w pliku *.h, co do implementacji to wygląda to tak:
- tworzysz nowy plik (tym razem *.cpp);
- na początku include'ujesz plik nagłówkowy z deklaracjami;
- ...i ew. inne pliki nagłówkowe;
- a potem implementacja funkcji
Mogłoby to wyglądać tak:
CKlasa.h
class CKlasa { private: int i; bool b; public: CKlasa(); CKlasa(int, bool); int setInt(int); int getInt(); . . . };
CKlasa.cpp
CKlasa::Cklasa() { i=0;b=false; } CKlasa::Cklasa(int i,bool b) { this.i=i;this.b=b; } int CKlasa::setInt(int i) { return (this.i=i); } int CKlasa::getInt() { return i; }
I teraz kiedy tylko chcesz skorzystac ze swojej klasy to po pierwsze we własciwe miejsce include'ujesz nagłówek a do całego projektu (Project->Add...) dodajesz implementacje czyli plik *.cpp
KoDo
GG:3857769
Nie musi wcale brac Project->Add... wystarczy ze na poczatku pliku uzyje dyrektywy #include "costam.h".
>BaR_TeK<
Language: C++/DirectX/WinAPI
IDE: MS Visual C++
cytat:bart_89 napisał:
Nie musi wcale brac Project->Add... wystarczy ze na poczatku pliku uzyje dyrektywy #include "costam.h".
Dla ścisłości, kiedy tworzy nową klasę (lub ogólnie definicję+implementację) to klasa ta automatycznie zostaje dodana do biezącego projektu (jeśli taki w ogóle jest otwarty) wiec tu nie ma problemu i nie musi juz dodawac drugi raz tego samego.
W przypadku natomiast kiedy zajdzie potrzeba wykorzystania tej klasy w innym projekcie (a często tak sie zdarza bo przeciez w jakims celu te klasy tworzymy...zeby sobie ułatwić :cheesy: ) to bezwarunkowo musi dodac plik *.cpp do projektu (Project-->Add To Project...) bo inaczej zwróci błąd przy linkowaniu.
I tu juz nawet nie ma znaczenia jaki to kompilator, implementacja zawsze musi byc dostraczona.
KoDo
GG:3857769