C ++箭头操作符重载。如何获取访问方法的名称?

时间:2013-08-26 19:48:34

标签: c++ operator-overloading overloading dereference

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

A b;
b->c;

b-> c应扩展为 boverloadarrayfunction("c"); 有可能吗?

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

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

1 个答案:

答案 0 :(得分:0)

  1. operator-> 数组运算符。没有一个C ++运算符被正式调用,但最适合该名称的运算符将是索引opeator[]
  2. 你想要的是不可能的。然而,在b->c中,c可以实现,"c"是一个符号,即某个变量或函数的名称。另一方面,b->c是一个字符串文字,第一个不能转换为后者(除了一些黑色预处理器魔法,它不适合表达式operator->)。
  3. 您可能希望查找重载operator->的工作原理,因为它必须返回一个指针或另一个->重载的对象。编译器将在任何返回的对象上调用{{1}},直到它真正取消引用指针。