Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro5] Biblioteka Header-Only

Ostatnio zmodyfikowano 2010-03-13 22:12
Autor Wiadomość
steckel
Temat założony przez niniejszego użytkownika
» 2010-03-13 19:59:10
Poradziłem sobie w ten sposób:
Klasy.hpp:
C/C++
#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:
C/C++
#include "klasy.hpp"

Loh::Loh( Loh * a ) {
    b = a;
}
Boh.hpp:
C/C++
#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ć?
P-14986
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...
P-14995
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:
C/C++
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ść :)
P-14998
1 « 2 »
Poprzednia strona Strona 2 z 2