Nachdem ich versucht habe, den Zugriff auf eine Speicherklasse etwas einfacher zu machen, bin ich in eine Situation geraten, über die ich nicht viel weiß. Und es ist nicht einfach, Menschen zu finden, die versuchen, dasselbe zu tun wie ich.
Was ich versuche zu tun, ist eine Klasse zu haben, die intern ein Array von Werten als Strings speichert, aber ein einfaches Casting vom Benutzer erlaubt. Was ich geplant hatte, ist die Verwendung des Array-Subscript-Operators, um den Typ zurückzugeben, den sie in einer Vorlage angeben. Obwohl es viel besser klingt, als es in der Praxis funktioniert. Hier ist ein einfaches Beispiel, was ich mache, um Ihnen eine Vorstellung davon zu geben, wie es funktionieren sollte
%Vor%Von dort würde ich ein paar spezifische Vorlagen definieren, und jeder Benutzer könnte sehr einfach mehr definieren, wenn nötig. Aber das größte Problem dabei ist, dass ich nicht weiß, wie man den Subscript-Operator mit einer Vorlage aufruft. Zuerst nahm ich folgendes an (was offensichtlich nicht korrekt ist), wenn man bedenkt, dass es ähnlich wie die Standardmethode ist, eine Template-Methode aufzurufen.
%Vor%Kennt jemand den richtigen Weg, den Subscript-Operator als Vorlage zu bezeichnen? Oder sollte ich es einfach vermeiden und eine benannte Methode verwenden?
Sie können Ihren Operator nur aufrufen, indem Sie list.operator[]<T>()
explizit schreiben.
Es gibt zwei grundlegende Möglichkeiten:
list.get<int>()
(wie von templatetypedef vorgeschlagen) T
zurück. Der Code würde wie folgt aussehen:
%Vor%Tags und Links c++ templates operator-overloading metaprogramming