Sobrecarregando operador unário &
Vamos considerar uma classe com operador unário sobrecarregado & (Endereço de). Deixe serclass A
template <class C>
class A
{
public:
C * operator &()
{
return &data;
}
//...
private:
C data;
}
gora eu quero passar para alguma função um ponteiro do tipoA
para preencher seudata
. Vamos chamá-lof
void f(A * auto_containter)
{
//...
}
Mas é claro por que o código abaixo não funcionaria (nem mesmo seria compilado). Isso ocorre porque o operador sobrecarregado é chamado.
A a;
f(&a);
A pergunta é a seguinte:
Existe alguma sintaxe para passar o endereço dea
paraf
? Se não, então para mim é muito estranho porque é permitido sobrecarregaroperator &
, porque torna o código mais complicado e difícil de entender. Ou existem outros motivos?