Я могу перегрузить оператор скобки, используя следующую подпись:Вызов скобку перегрузка дается указатель
char& operator()(const int r, const int c);
Предполагаемое использование этого было бы:
// myObj is an object of type MyClass
myObj(2,3) = 'X'
char Y = myObj(2,3);
Который работает, как я ожидал. Однако использование оператора скобки при работе с указателем становится запутанным. Я хотел бы сделать:
// pMyObj is a pointer to an object of type MyClass
pMyObj->(2,3) = 'X';
char Y = pMyObj->(2,3);
Однако такой синтаксис дает ошибку Error: expected a member name
(в VisualStudio, по крайней мере).
Следующие действия работают, но кажутся мне запутанными с разыменованием и более круглыми скобками, чем аргументы.
char X = (*pMyObj)(2,3);
Есть ли способ использовать оператор ->
вызвать перегрузку ()
?
'pMyObj-> operator() (2,3)' – juanchopanza
Вы уверены, что не можете устранить указатель? Если нет, вам нужно будет выбрать меньшее из двух зол. – chris