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...