Come posso inoltrare una classe che è stata digitata?
-
22-07-2019 - |
Domanda
Ho una classe di stringhe che, ovviamente, usa un'implementazione diversa a seconda che UNICODE sia abilitato o meno.
#ifdef UNICODE
typedef StringUTF16 StringT;
#else
typedef StringUTF8 StringT;
#endif
Funziona bene, ma al momento ho un problema in cui devo inoltrare la dichiarazione del typedef StringT. Come posso farlo?
Non riesco a fare typedef StringT;
quindi rende complicata la dichiarazione in avanti. È possibile fare una dichiarazione in avanti di questo tipo tipedef'd senza dover incollare il codice sopra nella parte superiore del file di intestazione?
Soluzione
Segui l'esempio impostato dall'intestazione standard iosfwd. Scrivi un file di intestazione che lo contiene e chiamalo StringTFwd.h
class StringUTF16;
class StringUTF8;
#ifdef UNICODE
typedef StringUTF16 StringT;
#else
typedef StringUTF8 StringT;
#endif
Almeno questo è riutilizzabile e non brutta le intestazioni che si riferiscono ad esso.
Altri suggerimenti
Non puoi. (Razionale: è possibile utilizzare typedef per definire un alias per un tipo di base e questi possono utilizzare convenzioni ABI diverse a seconda del tipo preciso).
Non puoi inoltrare sia StringUTF16 che StringUTF8 e quindi utilizzare il tuo #idef
?