C ++ statischer Operator überladen

8

Ist es möglich, C ++ - Klassenoperatoren im statischen Kontext zu überladen? z.B.

%Vor%     
jameszhao00 07.09.2009, 18:55
quelle

4 Antworten

13

Wenn Sie nach Metaprogrammierung mit dem integrierten Operator suchen: So etwas ist nicht möglich - die integrierten Operatoren arbeiten mit Laufzeitwerten und nicht mit Kompilierzeitwerten.

Sie können stattdessen dafür boost::mpl verwenden Verwenden Sie die integrierten Operatoren, verwenden Sie ihre Vorlagen, wie at für op[] , plus<a, b> für op+ usw.

%Vor%     
Johannes Schaub - litb 07.09.2009, 19:43
quelle
5

Ich glaube nicht, dass es möglich ist, obwohl ich an dieser Front falsch liegen könnte. Ich würde gerne fragen, warum Sie das tun sollten. Anstatt Operationen für eine Klasse anstelle von Instanzen auszuführen, benötigen Sie vielleicht nur eine Instanz in Ihrer gesamten Anwendung? In diesem Fall sollten Sie wahrscheinlich das Singleton-Muster verwenden.

    
Samir Talwar 07.09.2009 19:02
quelle
3

Wenn Sie meinen, der Operator operiert in einer Klasse, die Nein. Das macht keinen Sinn, es ist so, als würde man operator + may operator auf int oder double sagen. Operatoren sind syntaktische Zucker für Funktionen und sie arbeiten auf Variablen (Werte) und nicht auf Typen.

    
AraK 07.09.2009 19:01
quelle
1

Nein, Operatoren können keine statischen Mitglieder einer Klasse sein. Verwenden Sie stattdessen eine reguläre statische Funktion.

    
moonshadow 07.09.2009 19:05
quelle