我想以这种方式重载数组运算符。
A b;
b->c;
和b-> c
应扩展为
boverloadarrayfunction("c");
有可能吗?
编辑:免责声明我知道这是件坏事。
为什么:我想在QueryInterface中添加间接级别。
答案 0 :(得分:0)
operator->
不数组运算符。没有一个C ++运算符被正式调用,但最适合该名称的运算符将是索引opeator[]
。b->c
中,c
可以实现,"c"
是一个符号,即某个变量或函数的名称。另一方面,b->c
是一个字符串文字,第一个不能转换为后者(除了一些黑色预处理器魔法,它不适合表达式operator->
)。您可能希望查找重载operator->
的工作原理,因为它必须返回一个指针或另一个->
重载的对象。编译器将在任何返回的对象上调用{{1}},直到它真正取消引用指针。