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?

È stato utile?

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 ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top