Temat: W którym miejscu dołączać pliki nagłówkowe?
Utworzenie nowej klasy wiąże się z dodaniem do projektu dwóch plików - Klasa.h oraz Klasa.cpp.
W którym z tych plików najlepiej zawrzeć dyrektywy #include dołączające potrzebne biblioteki?
Plik nagłówkowy Klasa.h jest niejako wizytówką klasy. Powinien więc zawierać tylko to, co jest niezbędne do zrozumienia przeznaczenia i sposobu wykorzystania klasy.
Użytkownika klasy niekoniecznie powinny interesować szczegóły implementacji poszczególnych jej funkcjonalności.
Na przykład jeżeli w klasie dokonywane jest obliczanie wartości funkcji sinus to dla użytkownika klasy nie ma większego znaczenia czy jest to zrobione z wykorzystaniem takiej czy innej biblioteki, czy może poprzez rozwinięcie w szereg.
Dlatego wszelkie pliki nagłówkowe, które dotyczą wyłącznie implementacji, powinny być dołączone w pliku Klasa.cpp.
W pliku Klasa.h należy dołączać tylko te pliki nagłówkowe, które są niezbędne do zrozumienia przez kompilator kodu w nim zawartego.
Na przykład:
W klasie Wielokąt wyświetlamy na ekran jakieś informacje z wykorzystaniem strumieni i instrukcje to wykonujące znajdują się tylko w pliku Wielokat.cpp. Dołączenie biblioteki iostream znajdzie się więc w pliku Wielokat.cpp.
Jeżeli oprócz tego w skład klasy Wielokat wchodzą obiekty klasy Punkt i deklaracja takiego składnika klasy jest już umieszczona w pliku Wielokat.h, to dołączenie pliku Punkt.h musi zostać zawarte w pliku Wielokat.h.
Wielokat.h:
#pragma once
#include "Punkt.h"
class Wielokat {
int ileMamWierzcholkow;
Punkt* wierzcholki;
// pozostałe składniki klasy...
};
Wielokat.cpp:
#include "Wielokat.h"
#include <iostream>
using namespace std;
void Wielokat::info(void) {
cout << "Liczba wierzcholkow: " << ileMamWierzcholkow << endl;
}
//ciąg dalszy implementacji klasy...