[Allegro5] Biblioteka Header-Only
Ostatnio zmodyfikowano 2010-03-13 22:12
steckel Temat założony przez niniejszego użytkownika |
» 2010-03-13 19:59:10 Poradziłem sobie w ten sposób: Klasy.hpp: #ifndef KLASY_HPP #define KLASY_HPP
#include <mojeallegro.hpp>
class Boh; class Loh;
class Loh { public: Boh * b; Loh( Boh * a ); };
class Boh { Loh * l; Boh( Loh * a ); };
#endif
Loh.hpp: #include "klasy.hpp"
Loh::Loh( Loh * a ) { b = a; }
Boh.hpp: #include "klasy.hpp"
Boh::Boh( Loh * a ) { l = a; }
Przetestowałem to i działa jak należy. Czy jest to dobra technika, czy lepiej tego unikać? |
|
Elaine |
» 2010-03-13 21:51:46 Naprawdę działa? Nie ma multiple reference (linker tego nie ma prawa przełknąć, jeśli tego użyjesz w więcej niż jednym pliku .cpp)? A i ładniej byłoby, jakby był plik na klasę...
Może po prostu daj sobie spokój z robieniem tego header-only (bo widać, że ci to nie idzie i tego nie rozumiesz) i pisz "jak bozia przykazała" - deklaracje w .h, definicje w .cpp... |
|
steckel Temat założony przez niniejszego użytkownika |
» 2010-03-13 22:12:18 Naprawdę działa? Nie ma multiple reference (linker tego nie ma prawa przełknąć, jeśli tego użyjesz w więcej niż jednym pliku .cpp)? Omyłkowo napisałem nazwy 'boh.hpp' i 'loh.hpp' zamiast rozszerzenia '*.cpp', więc być może to cię zmyliło. Przetestowałem to w ten sposób: Boh boh; boh.y = 5; Loh loh; loh.b =& boh; loh.x = loh.b->y; cout << loh.x; cin.get();
gdzie 'x' i 'y' to składowe typu 'int'. Program wypisał 5, więc test wyszedł pozytywnie. Może po prostu daj sobie spokój z robieniem tego header-only (bo widać, że ci to nie idzie i tego nie rozumiesz) i pisz "jak bozia przykazała" - deklaracje w .h, definicje w .cpp...
Kiedyś miałem problem z tym dzieleniem plików (już nie pamiętam jaki) i ktoś na tym forum powiedział mi, żebym pisał header-only, więc w ten sposób stworzyłem tą bibliotekę, tylko nie wiedziałem jak powiązać ze sobą 2 klasy (jedna klasa jest składową drugiej i druga jest składową pierwszej). Jak będę miał jeszcze jakiś poważniejszy problem to spróbuję przepisać tą bibliotekę na *.h i *.cpp (ma to jakąś nazwę?). Dzięki za cierpliwość :) |
|
1 « 2 » |