C++ statische operator überladen
Ist es möglich, überlast-Klasse in C++ Operatoren, die im statischen Kontext? z.B.
class Class_1{ ... }
int main()
{
Class_1[val]...
}
- Sollte
Class_1[val]
Ertrag ein Typ? Wie Sie erwarten, zu tunClass_1[val] v;
? - Ich wollte es rentierliches Werte, aber die Typen sind in Ordnung.
- In C++, Typen dargestellt werden können, in das Typ-system (es gibt nur
std::type_id
) und ich kann nicht glauben, jeder operator kann überladen werden, statisch. Ich schlage vor, stattdessen zu Fragen, ob Ihre Implementierung die Idee realisierbar ist in C++ stellen Sie das tatsächliche problem, das gemeint war, zu lösen. Jemand könnte in der Lage sein, Vorschläge für eine praktikable Umsetzung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie auf der Suche für metaprogramming mit dem built-in-operator: So etwas ist nicht möglich - die eingebauten Operatoren operieren auf runtime-Werte, nicht auf die compile-Zeit-Werte.
Können Sie verwenden
boost::mpl
für, dass, und statt der Verwendung der built-in-Operatoren, verwenden Sie die Schablonen, wieat
fürop[]
,plus<a, b>
fürop+
etc.Ich glaube nicht, dass es möglich ist, obwohl ich falsch sein könnte an dieser front. Ich möchte Sie Fragen, warum Sie wollen, dies zu tun wenn. Anstatt die Durchführung von Operationen für eine Klasse anstatt an Instanzen, vielleicht, Sie benötigen nur eine Instanz in der gesamten Anwendung? In diesem Fall sollten Sie wahrscheinlich das singleton-Muster.
Wenn Sie meinen, die Betreiber wird auf eine Klasse, die Keine. Das macht keinen Sinn, es ist wie gesagt
operator +
können Betreiber aufint
oderdouble
. Operatoren sind syntaktischer Zucker für Funktionen und Sie können auf Variablen(Werte) nicht Typen.[]
.Nicht, die Betreiber nicht statische member einer Klasse. Verwenden Sie eine regelmäßige statische Funktion statt.