Kihagyás

Osztályok megvalósítása

Deklaráció és implementáció

Példa header / deklaráció

project-root/inc/Hallgato.h

1
2
3
4
5
6
7
#pragma once
class Hallgato {
  int credits;
public:
  /// return the int ration of credits and the average semester credit number
  int calculate_credits() const;
};

Példa implementáció

project-root/src/Hallgato.cpp

1
2
3
4
#include "../inc/Hallgato.h"

// az implementacio soran a this hasznalhato, hiszen tudjuk, a hallgato osztaly metodusa lenne.
int Hallgato::calculate_credits() const { return this->credits / 30; }

A félév során az osztályokat deklarációra és implementációra bontjuk. Ez azt jelenti, hogy kell készítenünk egy .h és egy .cpp fájlt. A deklaráció során az osztály metódusait nem valósítjuk meg, nem készítünk neki metódustörzset, ';'-vel zárjuk pl. int calculate_credits() const;. Ezt a metódust az implementáció során valósítjuk meg a .cpp fájlban. Ezeket a megvalósításokat le kell fordítanunk!

A metódus megvalósítása során, mivel nem az osztályon belül valósítjuk meg a metódust, meg kell adnunk, hogy pontosan melyik osztályhoz tartozik. Ezt scope operátorral tehetjük meg. int Hallgato::calculate_credits() const { return this->credits / 30; } Látható, hogy a metódus a Hallgato osztályhoz tartozik. Ahhoz, hogy az implementáció (.src) fordítása során az osztály deklarációja is elérhető legyen, be kell include-olni azt.

Include megadása

Az implementáció során az include megadása több módon is történhet. A legegyszerűbb, amikor " " jelek közt adjuk meg a megvalósításhoz (.src) képest relatív útvonalon a deklarációt (.h) Ha root/inc/.h és root/src/.cpp szerkezetet feltételezünk, akkor az implementációban a relatív elérés a következő lehet: #include "../inc/Hallgato.h" Ez igen gyakori, azonban van lehetőségünk megadni include directory -kat. Ekkor az include során az ezen útvonalakhoz képest relatív útvonalat is használhatjuk, akkor is, ha teljesen más helyen helyezkednek el az implementációs (.cpp) fájlok.

Include directory megadása (terminal / g++)

Ha terminálból fordítunk, akkor a fordítónak kell megadnunk, hogy mely útvonalak lesznek include útvonalak, így a fordítás során az implementációs (.cpp) fájlokban található #include "path" útvonalak elérhetők legyenek. Ezt a -I kapcsolóval adhatjuk meg. A már fentebb említett struktúrát feltételezve, a root könyvtárból fordítva: g++ src/Hallgato.cpp -I ./inc Ennek a megadásával az implementáció során a következő include helyes: #include "Hallgato.h" hiszen a root/inc include directory, így a benne lévő deklarációk (.h) fájlok elérhetők bárhonnan.

Ha csak a root directory lenne megadva: g++ src/Hallgato.cpp -I ./ akkor az inc mappát tartalmaznia kell az include útvonalnak, hiszen az alap keresési mappa a root lesz. #include "inc/Hallgato.h"

Include directory megadása (CMake / CLion)

A CMake egy build rendszer, bővebben itt, specifikus kérdések emailben / discordon! CMake használatakor a generált CMake file hazsnálható, csak meg kell adnunk az include directory-kat. include_directories(./inc) sor hozzáadása után a root könyvtárban található inc könyvtár is include directory lesz.

CMake használata terminálból is lehetséges, akkor csak a cmake illetve make programokra van szükség. További információ emailben illetve Discord-on.


Utolsó frissítés: 2022-09-16
Létrehozva: 2022-09-16