我有两个具有以下结构的类:
struct A {
A transform() const;
};
struct B {
// returns a temporary A
A operator*() const;
};
操作符在*
这里可能看起来有点奇怪,但考虑到它的使用上下文实际上是很自然的。事实上,B
真正的存在只是为嵌入式语言提供一些语法糖,因此它的方法和运算符旨在为代码提供所需的外观。给定B b
,获得关联A
的速度很快,*b
。我有时想A
立即调用转换。目前,这需要一些额外的括号(*b).transform()
。似乎有一个自然的简化,即b->transform()
. 但是operator ->
应该返回一个指针并且operator *
返回一个临时的。我怎样才能实现这样的重载?