Klasa w pliku *.h
Ostatnio zmodyfikowano 2009-09-05 17:07
malan Temat założony przez niniejszego użytkownika |
Klasa w pliku *.h » 2009-09-04 23:05:36 Witam. Ostatnio stwierdziłem, że nie podobają mi się klasy (czy struktury) w pliku *.cpp (wole je mieć w jednym miejscu), więc kombinowałem, kombinowałem i wykombinowałem to: #ifndef TEST_H #define TEST_H
namespace { class OperacjeMatematyczne { public: int skladnik1, skladnik2; int odjemna, odjemnik; int Dodaj_dwie_liczby( void ); int Odejmij_dwie_liczby( void ); }; int OperacjeMatematyczne::Dodaj_dwie_liczby( void ) { return( skladnik1 + skladnik2 ); } int OperacjeMatematyczne::Odejmij_dwie_liczby( void ) { return( odjemna - odjemnik ); } }
#endif
#include <iostream> #include <conio.h> #include "Test.h"
int main() { OperacjeMatematyczne Obiekt; std::cout << "Podaj liczbe 1: "; std::cin >> Obiekt.skladnik1; std::cout << "Podaj liczbe 2: "; std::cin >> Obiekt.skladnik2; std::cout << "Podaj liczbe 3: "; std::cin >> Obiekt.odjemna; std::cout << "Podaj liczbe 4: "; std::cin >> Obiekt.odjemnik; std::cout << Obiekt.skladnik1 << " + " << Obiekt.skladnik2 << "= " << Obiekt.Dodaj_dwie_liczby() << std::endl; std::cout << Obiekt.odjemna << " - " << Obiekt.odjemnik << "= " << Obiekt.Odejmij_dwie_liczby(); getch(); return 0; }
Teraz tylko nie do końca wiem, czy tak można robić, czy nie jest to błąd. Mógłby mnie ktoś oświecić ? ;) |
|
pompom |
» 2009-09-05 00:03:14 Z punktu widzenia kompilatora nie ma różnicy, include przecież po prostu wstawia plik przed kompilacją. Jeśli się da, należy oddzielić kod od deklaracji - jest mniejszy bałagan i kompilacja jest szybsza (kompilują się tylko te pliki .cpp, w których coś zmieniłeś). I tak z 10% klas musi być w pliku nagłówkowym, ze względu na olanie części standardu przez praktycznie wszystkie kompilatory...
P.S. Jak piszesz małe rzeczy, nie dziel niepotrzebnie na pliki, tylko pisz wszystko w jednym. Dopiero jak coś się zacznie robić za duże to wydziel. |
|
DejaVu |
» 2009-09-05 00:05:06 Z praktycznego punktu widzenia kod w *.cpp ma duże zalety - np. zmiana pliku *.cpp powoduje tylko i wyłącznie jego przebudowanie. Zmiana pliku *.hpp powoduje przekompilowanie wszystkich plików zależnych od niego :) |
|
malan Temat założony przez niniejszego użytkownika |
» 2009-09-05 16:25:23 P.S. Jak piszesz małe rzeczy, nie dziel niepotrzebnie na pliki, tylko pisz wszystko w jednym Wiem, wiem ;). To jest tylko taki przykład. @Piotr Szawdyński: No dobrze, ale jeśli stworzę sobie klasę w pliku *.cpp, a będę potrzebował np. funkcji Dodaj_dwie_liczby(void) w innym pliku źródłowym to co wtedy ? Przecież nie dodam *cpp. Teraz właśnie kończę taki dość rozbudowany projekt w allegro i mam tam kilka plików źródłowych. W pewnym momencie potrzebowałem pewnej struktury, która była właśnie w pliku *.cpp, a że nie wiem czy są jakieś sposoby żeby poinformować kompilator (program), że struktura znajduje się w innym pliku to napisał to jeszcze raz ;p. Gdybym miał tę strukturę w pliku np. struktury.h to wystarczyłoby include "struktury.h" i po kłopocie. Dodam jeszcze tylko, że ten plik Test.h nie chce się kompilować. Muszę zapisywać zmiany metodą "Plik -> Save" ;p. |
|
malan Temat założony przez niniejszego użytkownika |
» 2009-09-06 14:37:05 No tak, ale jeśli funkcja jest zadeklarowana w jakieś klasie to nic to nie da, bo definicję funkcji musiałbym mieć w tym samym pliku co klasa (*.cpp).
Temat uważam za rozwiązany - dzięki ;). |
|
manfred |
» 2009-09-05 17:07:06 Jeśli do headera wrzuciłbyś same deklaracje, a do cpp definicje, to mógłbyś używać funkcji w wielu plikach... |
|
« 1 » |