I die Klammer-Operator die folgende Signatur überlasten:die Klammer Aufruf Überlastung einen Zeiger
char& operator()(const int r, const int c);
Die beabsichtigte Verwendung hierfür wäre:
// myObj is an object of type MyClass
myObj(2,3) = 'X'
char Y = myObj(2,3);
Welche wie ich erwarte, dass funktioniert. Wenn Sie jedoch den Klammeroperator verwenden, wenn Sie mit einem Zeiger arbeiten, wird er gefaltet. Ich möchte tun:
// pMyObj is a pointer to an object of type MyClass
pMyObj->(2,3) = 'X';
char Y = pMyObj->(2,3);
jedoch solche Syntax ergibt die Fehler Error: expected a member name
(in Visual Studio zumindest).
Das folgende funktioniert, aber scheint mir mit einer Dereferenz und mehr Klammern als Argumente verschachtelt.
char X = (*pMyObj)(2,3);
Gibt es eine Möglichkeit, den ->
Operator zu verwenden, um die ()
Überlastung zu nennen?
'pMyObj-> operator() (2,3)' – juanchopanza
Sind Sie sicher, dass Sie den Zeiger nicht beseitigen können? Wenn nicht, müssen Sie das kleinere Übel wählen. – chris