Carlos Pantelides, el 8 de septiembre a las 14:30 me escribiste:
> Juan:
>
> Gracias, tenés razón, compila y... linkea.
>
> Lo que envié fue una reducción (incorrecta, parece) de mi problema real,
> donde hay herencia múltiple involucrada.
>
> Reenvio una reducción mejorcita, que compila pero no linkea
>
> compilo con:
>
> g++ -Wall -pedantic -pedantic-errors -O3 -DNDEBUG -ggdb -DDEBUG -fno-inline
> -std=c++98 -c -o test.o test.cpp
>
> linkeo con:
>
> g++ test.o -o test
>
>
> class Observer{
> public:
>
> Observer(){}
> virtual ~Observer(){}
> virtual void update(int i)=0;
> virtual void update()=0;
> };
>
> class Output:public Observer {
> public:
> Output(){}
> virtual ~Output(){}
> virtual void update();
Acá está tu problema, debería ser:
virtual void update() {}
Si no le estás diciendo al compilador que Output::update() está definida,
pero el linker después no la encuentra (porque no la definiste).
Otra posibilidad, si querés que Output siga siendo "abstracta" (virtual
pura usando nomenclatura de C++ =), es poner:
virtual void update()=0;
(es decir, diciéndole al compilador que update() sigue siendo virtual
pura).
--
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
aFR [EMAIL PROTECTED] has quit IRC (Ping timeout)
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion