我有两个具有以下结构的类:
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 *返回一个临时的。我怎样才能实现这样的重载?