Witam, mam problem z includowaniem plików w C++. Problem pewnie i banalny ale przyzwyczajony od zawsze do kodzenia w javie te c++ headery sa po prostu okropne.
Mam taka sobie sytuacje:
plik a.cpp
#include "b.cpp" {
class a {
b B;
}
}
plik b.cpp
#include "a.cpp"
class b {
a A;
}
I w takiej sytuacji linker mi się zapętla. A przecież to zwykła ja chce ze tak powiem zwykla relacje dwukieronkowa miedzy dwoma obiektami.
Dobra, wiec zrobmy do po bozemu tj. uzywajac header - na razie bez straznikow:
plik a.hpp
#include "b.hpp" {
class a {
b B;
}
}
plik b.hpp
#include "a.hpp"
class b {
a A;
}
plik a.cpp
#include "a.hpp" {
//metody a
}
plik b.cpp
#include "b.hpp"
//metody a
No ale cóz, linker dalej sie zapetla.
No wiec dodajmy straznikow, co nastepuje:
plik a.hpp
#ifndef a_HPP
#define a_HPP
#include "b.hpp" {
class a {
b B;
}
#endif
}
plik b.hpp
#ifndef b_HPP
#define b_HPP
#include "a.hpp"
class b {
a A;
}
#endif
plik a.cpp
#include "a.hpp" {
//metody a
}
plik b.cpp
#include "b.hpp"
//metody a
tyle, że teraz to w ogóle mi mowi , przy kompilacji dajmy na to pliku a.cpp, ze nie moze odnaleźć pliku klasy b;
Szczerze mowiac jezyka c++ nie lubie, bo jest toporny jak dla mnie :), ale jestem zmuszony cos na zajecia w nim zrobic.
Kto mi powie jak prawidlowo powinienem to zaindkludowac