考虑一个重载了一元运算符 &(取地址)的类。假设这个类是A
类。
template <class C>
class A
{
public:
C * operator &()
{
return &data;
}
//...
private:
C data;
}
现在我想要将类型为A
的指针传递给某个函数,以填充它的data
。我们将其称为f
。
void f(A * auto_containter)
{
//...
}
但是很明显下面的代码不会工作(甚至无法编译)。这是因为调用了重载运算符。
A a;
f(&a);
问题如下:
是否有语法可以将 a
的地址传递给 f
?如果没有,那么对我来说很奇怪的是为什么允许重载一元运算符 &
,因为它会使代码更加容易出错和难以理解。或者还有其他原因吗?
A * A :: addressof() {return this;}
。 - Ben Jackson