C++箭头运算符重载.如何获取被访问方法的名称

C++ arrow operator overloading. How to get name of accessed method?

本文关键字:访问 方法 获取 运算符 重载 何获取 C++      更新时间:2023-10-16

我想用这种方式重载数组运算符。

A b;
b->c;

并且CCD_ 1应该扩展到boverloadarrayfunction("c");有可能吗?

编辑:免责声明我知道这是件坏事。

为什么:我想向QueryInterface添加间接级别。

  1. operator->而不是数组运算符。没有一个C++运算符是以这种方式正式调用的,但最适合这个名称的是索引opeator[]
  2. 你想要什么是不可能的。在b->c中,c是一个符号,即某个变量或函数的名称。另一方面,"c"是一个字符串文字,第一个不能转换为后者(除了一些黑色预处理器魔术,它不适合表达式b->c

您可能想了解重载operator->是如何工作的,因为它的特殊之处在于它必须返回一个指针或另一个重载了b-> c0的对象。编译器将对任何返回的对象调用->,直到它真正取消引用指针为止。