2016-06-25 14 views
0

Wenn ich eine Klasse namens ClassA mit einer typecast-Überladung von Klasse B und Klasse C habe, wie kann ich den ==-Operator für Klasse A als classC typisiert deaktivieren?C++: Remove == oder ein anderer Operator für bestimmte Typen

class classA{ 
    operator classB(); 
    operator classC(); 

    //Remove this comparison possibility: 
    operator ==(classC firstObject,classC secondObject); 
} 

Folgen von dieser Frage über:

Ambiguous overload when using many typecasts operator overloads

+2

make operatorB und operatorC explizit machen? Dies ist kein vollständiges Beispiel. Können Sie ein minimales, vollständiges Beispiel pls posten? –

+1

Ihr Code wird nicht funktionieren, und nicht nur wegen eines fehlenden ';'. Sie haben dort eine Art trinärer Operator. 'operator ==' benötigt entweder ein Argument, wenn es sich um ein Mitglied handelt, oder zwei, wenn es sich um ein Nichtmitglied handelt. ... Wie der Kommentar oben sagt, lassen Sie uns einen [mcve] holen, damit wir sehen können, was Sie bisher versucht haben und was nicht funktioniert. –

Antwort

3

In C++ 11 können Sie delete Methoden.
Dies ist ähnlich wie die Methode privat.
Es drückt jedoch die Absicht des Programmierers aus und führt zu beschreibenden Compilerfehlern.

class classA{ 
    operator classB(); 
    operator classC(); 

    //Remove this comparison possibility: 
    classC operator ==(classC secondObject) = delete; 
}; 
2

den Bediener definieren und es private machen. Dann wird es niemand anders nennen können.

Verwandte Themen