[C con Clase] Sobrecarga del operador >> y herencia

abvera en arnet.com.ar abvera en arnet.com.ar
Vie Feb 19 21:37:33 CET 2010



class A{
        ...
        // Sobrecarga del
operador >>
        friend std::istream&
operator>>(std::istream& ain, A& a);
}

class
B{
        ...
        // Sobrecarga del
operador >>
        friend std::istream&
operator>>(std::istream& bin, B& b);
}


class X : public A, public B {
    ...

}

Las clases A y B compilan separadamente. No logro compilar
la clase X. Cada 
uno en su propio archivo de definición .cpp


la pregunta es ¿Hay alguna forma de lograr el siguiente
comportamiento:?

X >> miX;
y automaticamente se
llame a

        A
>> miX;
        B
>> miX;
o viceversa.

Al intentar compilar X, el
error que me tira es sobrecarga ambigua. Y de hecho 
el compilador no
sabe cual de las dos definiciones de sobrecarga tiene 
prioridad.

Una solución sería sobrecargar X y no hacer en A y
B, pero es más laborioso. 
Se me ocurre que podría
haber alguna tenica que me permita aprovechar la 
sobrecarga de las
clases bases.

----------
El error que me tira el
compilador es el siguiente, pero las clases no son las 
misma de
ejemplo.

pprof.cpp: In function ‘int main()’:
pprof.cpp:38: error: ambiguous overload para
‘operator>>’ en ‘std::cin >> yo’
CTitulo.h:48: nota: los candidatos son: std::istream& 
operator>>(std::istream&, CTitulo&)
CPersona.h:53:
nota:                  
  std::istream& 
operator>>(std::istream&,
CPersona&)
pprof.cpp:39: error: ambiguous overload para
‘operator<<’ en ‘std::cout << yo’
CTitulo.h:47: nota: los candidatos son: std::ostream& 
operator<<(std::ostream&, CTitulo&)
CPersona.h:52:
nota:                  
  std::ostream& 
operator<<(std::ostream&,
CPersona&)
-------------------

Armando B. VERA
abvera en arnet.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100219/6d97516e/attachment.html>


Más información sobre la lista de distribución Cconclase