C++ C++;箭头运算符重载。如何获取被访问方法的名称?
我想用这种方法重载数组操作符C++ C++;箭头运算符重载。如何获取被访问方法的名称?,c++,operator-overloading,overloading,dereference,C++,Operator Overloading,Overloading,Dereference,我想用这种方法重载数组操作符 A b; b->c; 而b->c应该扩展到 boverloadarrayfunction(“c”) 可能吗 编辑:免责声明我知道这是件坏事 原因:我想在QueryInterface中添加间接级别 运算符->不是数组运算符。C++操作符中没有一个是这样调用的,但是最适合这个名称的是索引 opeAtter []/Calp> 你想要的是不可能的。然而,在b->c中,c是一个符号,即某个变量或函数的名称“c”是一个字符串文字,第一个不能转换为后者(除非使用某种黑色预
A b;
b->c;
而b->c
应该扩展到
boverloadarrayfunction(“c”)代码>
可能吗
编辑:免责声明我知道这是件坏事
原因:我想在QueryInterface中添加间接级别
运算符->
不是数组运算符。C++操作符中没有一个是这样调用的,但是最适合这个名称的是索引<代码> opeAtter []/Calp>
你想要的是不可能的。然而,在b->c
中,c
是一个符号,即某个变量或函数的名称<另一方面,代码>“c”
是一个字符串文字,第一个不能转换为后者(除非使用某种黑色预处理器魔法,它不适合表达式b->c
)
您可能想查看重载
运算符->
的工作原理,因为它的特殊性在于它必须返回一个指针或另一个重载了运算符->
的对象。编译器将对任何返回的对象调用->
,直到它真正取消引用指针。您可以重载运算符->
,但如果重载的作用不像指针,那么这样做是非常糟糕的。您认为哪个运算符是“数组运算符”?和c
不会仅仅因为您希望它成为字符串。我甚至不敢猜测OP特别描述的执行此操作的代码会是什么,甚至读得更少。因为,。。你知道,b[c]
就是不能解决这个问题吗?@ZacHowland:我同意-我不想尝试去理解这样的代码中发生了什么。