Frage zu Templates und typedef
-
Hallo Zusammen,
ich habe folgende Situation: Ein größeres Projekt, sehr viele Templates (auch template-Polymorphismus, etc). Jetzt habe ich einige Hauptklassen, die viele Template-Parameter brauchen. Da ich diese ungerne jedes mal hinschreiben möchte, würde ich gerne eine "Konfigurationsklasse" hernehmen. Ich habe mir das Ganze in etwa so vorgestellt:
template <class _A, class _B> class Conf { protected: typedef _A A; typedef _B B; }; template <class C> class M : protected C { using C::A; using C::B; public: void test() { A a; B b; }; };Leider geht das so nicht, der Compiler kennt offenbar A, B in der Klasse M nicht und spuckt Fehlermeldungen aus, dass er einen ";" erwarten würde (aber keinen undeclared identifier).
Was muss ich tun, damit das funktioniert? Gibt es eventuell schönere Lösungen, als ich mir das jetzt vorgestellt habe?
Danke!
Lucas
-
Da helfen ein paar "typename"'s aus der Patsche.

template <class _A, class _B> class Conf { protected: typedef _A A; typedef _B B; }; template <class C> class M : protected C { typedef typename C::A A; typedef typename C::B B; public: void test() { A a; B b; }; };
-
Hm, okay, klar

Irgendwie auch nicht ganz schön, am liebsten wärs mir, wenn ich in der unteren Klasse gar nichts mehr schreiben müsste... Naja, wird dann wohl ein Preprocessor-Makro.
-
ich glaube nicht, dass man das typedef braucht... : P
template <typename T, typename U> class Conf { protected: typedef T A; typedef U B; }; template <typename C> class M : protected C { public: void test() { A a; B b; }; }; int main() { M< Conf<int, int> > m; m.test(); }kompiliert zumindest der msvc anstandslos - wär mir auch neu, wenn das nicht gehen sollte^^
bb
-
unskilled schrieb:
wär mir auch neu, wenn das nicht gehen sollte^^
Dann kannst du noch was lernen.
Abhängige Basisklassen werden beim unqualifizierten Lookup nicht durchsucht.