Czy moglby ktos podac psyklad zapisanej klasy (z konstruktorem) w oddzielnym od main pliku.
Poprostu niebardzo wiem co trzeba pisac w .h i co .cpp pliku.
z gory dzieki
[c++] Klasa w oddzielnym pliku
-
- Użytkownik
- Posty: 4094
- Rejestracja: 10 lut 2008, o 15:31
- Płeć: Mężczyzna
- Lokalizacja: Łódź
- Podziękował: 12 razy
- Pomógł: 805 razy
[c++] Klasa w oddzielnym pliku
W main.cpp, jeśli będzie trzeba użyć w kodzie tej klasy:
W biedronka.h:
W biedronka.cpp:
Kod: Zaznacz cały
#include "biedronka.h"
Kod: Zaznacz cały
#ifndef BIEDRONKA_H
#define BIEDRONKA_H
class Biedronka
{
int liczbaKropek;
public:
Biedronka(int _liczbaKropek);
int getLiczbaKropek();
void setLiczbaKropek(int _liczbaKropek);
};
#endif
Kod: Zaznacz cały
#include "biedronka.h"
Biedronka::Biedronka():liczbaKropek(_liczbaKropek)
{
}
int Biedronka::getLiczbaKropek()
{
return liczbaKropek;
}
void Biedronka::setLiczbaKropek(int _liczbaKropek)
{
liczbaKropek=_liczbaKropek;
}
-
- Użytkownik
- Posty: 218
- Rejestracja: 24 lis 2009, o 10:55
- Płeć: Mężczyzna
- Lokalizacja: Wilno
- Podziękował: 27 razy
[c++] Klasa w oddzielnym pliku
Dzieki, wszystko dziala, lecz niebardzo rozumiem cemu sam biedronka.cpp nigdzie nidolancamy, napsyklad w biedronka.h, w main robimy include biedronka.h i w biedronka.cpp robimy tosamo, a czemu w .h nietrzeba robic include .cpp?
-
- Moderator
- Posty: 2828
- Rejestracja: 15 cze 2008, o 15:45
- Płeć: Mężczyzna
- Lokalizacja: Seattle, WA
- Podziękował: 3 razy
- Pomógł: 356 razy
[c++] Klasa w oddzielnym pliku
Działa to w ten sposób, że w trakcie kompilowania kodu kompilator musi wiedzieć, jak coś wygląda, a nie potrzebuje implementacji. Zatem main.cpp używając klasy Biedronka nie potrzebuje biedronka.cpp, bo w biedronka.h ma wszystko, co jest potrzebne do działania. Samym sklejaniem kodu z kawałków zajmuje się linker.
-
- Użytkownik
- Posty: 4094
- Rejestracja: 10 lut 2008, o 15:31
- Płeć: Mężczyzna
- Lokalizacja: Łódź
- Podziękował: 12 razy
- Pomógł: 805 razy
[c++] Klasa w oddzielnym pliku
Właśnie miałem napisać to samo
Dodam tylko, że linker dostaje najpewniej od kompilatora pliki w formacie *.o i w nich będzie sobie szukał tego, co mu będzie w danym miejscu potrzebne; co do pliku *.cpp, to możesz sobie to definiowanie biedronki rozbić na 10 plików i i tak będzie ok, ważne, żeby gdzieś te metody zaimplementować (spróbuj wykomentować sobie np. ciało konstruktora z pliku *.cpp - kompilator nie będzie krzyczał, bo jego ciało nie obchodzi, dopiero linker się oburzy).
PS Jak wszystko działa, to masz kiepski ten kompilator, bo zapomniałem o parametrze w konstruktorze Sorki.
Dodam tylko, że linker dostaje najpewniej od kompilatora pliki w formacie *.o i w nich będzie sobie szukał tego, co mu będzie w danym miejscu potrzebne; co do pliku *.cpp, to możesz sobie to definiowanie biedronki rozbić na 10 plików i i tak będzie ok, ważne, żeby gdzieś te metody zaimplementować (spróbuj wykomentować sobie np. ciało konstruktora z pliku *.cpp - kompilator nie będzie krzyczał, bo jego ciało nie obchodzi, dopiero linker się oburzy).
PS Jak wszystko działa, to masz kiepski ten kompilator, bo zapomniałem o parametrze w konstruktorze Sorki.
-
- Użytkownik
- Posty: 218
- Rejestracja: 24 lis 2009, o 10:55
- Płeć: Mężczyzna
- Lokalizacja: Wilno
- Podziękował: 27 razy
[c++] Klasa w oddzielnym pliku
Dzieki za wyjasnienia:)
P.S. Dziala poniewaz urzywalem tego jak przyklad, a nie psepisywalem tosamo
P.S. Dziala poniewaz urzywalem tego jak przyklad, a nie psepisywalem tosamo