[c++] Klasa w oddzielnym pliku

Inkognito
Użytkownik
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

Post autor: Inkognito »

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
Crizz
Użytkownik
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

Post autor: Crizz »

W main.cpp, jeśli będzie trzeba użyć w kodzie tej klasy:

Kod: Zaznacz cały

#include "biedronka.h"
W 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
W biedronka.cpp:

Kod: Zaznacz cały

#include "biedronka.h"

Biedronka::Biedronka():liczbaKropek(_liczbaKropek)
{

}

int Biedronka::getLiczbaKropek()
{
	return liczbaKropek;
}

void Biedronka::setLiczbaKropek(int _liczbaKropek)
{
	liczbaKropek=_liczbaKropek;
}
Inkognito
Użytkownik
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

Post autor: Inkognito »

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?
Afish
Moderator
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

Post autor: Afish »

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.
Crizz
Użytkownik
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

Post autor: Crizz »

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.
Inkognito
Użytkownik
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

Post autor: Inkognito »

Dzieki za wyjasnienia:)


P.S. Dziala poniewaz urzywalem tego jak przyklad, a nie psepisywalem tosamo
ODPOWIEDZ