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

Responder a