2009-08-05 9 views
2

Ich habe eine String-Klasse, die, je nachdem, ob UNICODE aktiviert ist oder nicht, eine andere Implementierung verwendet.Wie kann ich eine Klasse deklarieren, die typedef'd ist?

Das funktioniert gut, aber ich habe derzeit ein Problem, wo ich die StringT typedef weiterleiten muss. Wie kann ich das machen?

Ich kann nicht tun typedef StringT; so macht es Vorwärtsdeklaration schwierig. Ist es möglich, eine Forward-Deklaration dieses Typs durchzuführen, ohne den obigen Code oben in die Header-Datei eingeben zu müssen?

Antwort

8

Folgen Sie dem Beispiel des iosfwd-Standard-Headers. Schreiben Sie eine Header-Datei, die diese enthält, und rufen StringTFwd.h es

class StringUTF16; 
class StringUTF8; 

#ifdef UNICODE 
typedef StringUTF16 StringT; 
#else 
typedef StringUTF8 StringT; 
#endif 

Mindestens diese wiederverwendbar ist und nicht häßlich die Header, die darauf verweisen.

+0

Ah gut ... das ist, was ich befürchtet habe. Prost :) – Goz

2

Sie können nicht. (Rational: Sie können typedef verwenden, um einen Alias ​​für einen Basistyp zu definieren, und diese können abhängig vom genauen Typ unterschiedliche ABI-Konventionen verwenden).

Können Sie nicht sowohl StringUTF16 und StringUTF8 deklarieren und dann Ihre #idef verwenden?

Verwandte Themen