"templating" einen namespace

Ich würde gerne etwas bauen wie dieses:

File 1:
template<typename Vector>
namespace myNamespace {
  class myClass1{ myClass1(Vector v) {...} }
}

File 2:
template<typename Vector>
namespace myNamespace {
  class myClass2{ myClass2(Vector v) {...} }
}

Dies ist natürlich nicht möglich, weil Sie nicht-template-namespaces.
Stattdessen könnte ich ein struct statt eines namespace, aber dann kann ich nicht verbreiten und Funktionen mit namespace über mehrere Dateien.

Gibt es eine Lösung für so ein problem?

PS: ich weiß, ich könnte die Vorlage der Klassen, aber dann würde ich festlegen, welche vector Typ, den ich nutzen möchte, Wann immer ich eine neue Klasse erstellen.

  • Über dein PS: Wie denken Sie, dass Sie einen Vorlagen-namespace entfernen müssen, geben Sie den Typ der vector beim instanziieren von Klassen? Sie würden noch brauchen, zumindest so etwas wie eine (fiktive) using namespace myNamespace<some_vector_t>;
  • Ich bin mit stakx auf dieser. Und was ist das int im code?
  • Ja, aber dann könnte man etwas wie das hier tun: int function1() { using namespace myNamespace<int>; myClass1 c1 = myClass1(5); myClass2 c2 = myClass2(2); } int function2() { using namespace myNamespace<char>; myClass1 c1 = myClass1('a'); myClass2 c2 = myClass2('b'); } Sorry, int ist falsch, ich werde es löschen. Wie kann ich fügen Sie hier den code korrekt?
InformationsquelleAutor Manuel | 2010-07-23
Schreibe einen Kommentar