[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