Portál AbcLinuxu, 17. července 2025 12:10
#include <SDL.h> typedef Uint8 w_byte; typedef Sint8 w_sbyte; // ...Pro použití mého API je nezbytné, aby se #includoval soubor wtypes.h. Jenže ten obsahuje #include <SDL.h> kvůli datovým typům. Takže pokud nebude mít programátor ani ponětí o existenci nějaké SDL knihovny, při použití mého API pravděpodobně dostane chybu, že nebyl nalezen SDL.h. Jak se tomu dá vyhnout? Potřebuji možnost odvození vlastních typů od těch ze SDL, ale zároveň z pohledu někoho, kdo používá mé API, vazbu na SDL úplně zrušit.
Vytvářím si v C++ knihovnu určenou pro psaní jednoduchých her postavenou nad SDL.Trošku si protiřečíte, ne?
...
...vazbu na SDL úplně zrušit.
<inttypes.h>
tam, kde je tento hlavičkový soubor dostupný, a nějakou magii přes preprocesor nebo configure skript jinde?
class A_data; class A { protected: A_data* data; public: // ... };Ta pomocná třída
A_data
bude definovaná až v implementaci, takže ji uživatel v hlavičkovém souboru neuvidí. Do ní oddělíte všechno, co je závislé na SDL.
void *
' a jeho přetypování v implementaci. V C++ to samozřejmě můžete udělat také, ale řešení, které jsem nastínil, mi připadá čistší.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.