class A{<br />        ...<br
/>        // Sobrecarga del
operador >><br
/>        friend std::istream&
operator>>(std::istream& ain, A& a);<br />}<br /><br />class
B{<br />        ...<br
/>        // Sobrecarga del
operador >><br
/>        friend std::istream&
operator>>(std::istream& bin, B& b);<br />}<br /><br /><br
/>class X : public A, public B {<br />    ...<br /><br
/>}<br /><br />Las clases A y B compilan separadamente. No logro compilar
la clase X. Cada <br />uno en su propio archivo de definición .cpp
<br /><br />la pregunta es ¿Hay alguna forma de lograr el siguiente
comportamiento:?<br /><br />X >> miX;<br />y automaticamente se
llame a<br /><br />        A
>> miX;<br />        B
>> miX;<br />o viceversa.<br /><br />Al intentar compilar X, el
error que me tira es sobrecarga ambigua. Y de hecho <br />el compilador no
sabe cual de las dos definiciones de sobrecarga tiene <br />prioridad.<br
/><br />Una solución sería sobrecargar X y no hacer en A y
B, pero es más laborioso. <br />Se me ocurre que podría
haber alguna tenica que me permita aprovechar la <br />sobrecarga de las
clases bases.<br /><br />----------<br />El error que me tira el
compilador es el siguiente, pero las clases no son las <br />misma de
ejemplo.<br /><br />pprof.cpp: In function ‘int main()’:<br
/>pprof.cpp:38: error: ambiguous overload para
‘operator>>’ en ‘std::cin >> yo’<br
/>CTitulo.h:48: nota: los candidatos son: std::istream& <br
/>operator>>(std::istream&, CTitulo&)<br />CPersona.h:53:
nota:                  
  std::istream& <br />operator>>(std::istream&,
CPersona&)<br />pprof.cpp:39: error: ambiguous overload para
‘operator<<’ en ‘std::cout << yo’<br
/>CTitulo.h:47: nota: los candidatos son: std::ostream& <br
/>operator<<(std::ostream&, CTitulo&)<br />CPersona.h:52:
nota:                  
  std::ostream& <br />operator<<(std::ostream&,
CPersona&)<br />-------------------<br /><br />Armando B. VERA<br
/>abvera@arnet.com.ar