我可以使用以下签名重载括号运算符:
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);
有没有办法使用->
运算符来调用()
重载?