weno, tengo ya casi solucionado el tema, pero acudo a ustedes con otra duda, tengo una función virtual pura del tipo Componente llamada string aRistra() const, la cual desarrollan los descendientes ComponenteTexto, ComponenteNumero, ComponenteFecha y ComponenteCompuesto.
El caso es la función tiene el mismo cuerpo para los 3 primeros descendientes, es decir, un copiar y pegar. Cuando en el main hago las pruebas llamando a esta función de cada componente, me funciona en el Texto y en el Fecha, pero al compilar llamando al ComponenteNumero, me da el siguiente error:
undefined reference to "ComponenteNumero::aRistra()"
*g++ -opractica3.exe ./componentes.o ./pruebadoc.o In function "main"
no lo entiendo porque el código es exactamente el mismo que a las otras llamadas, y está bien desarrollado. Os dejo la parte para que la veais:
Componentes.h
class Componente
{
//clase virtual pura
protected:
string ristra;
public:
virtual ~Componente()
{
}
virtual string aRistra() const =0;
virtual int ncaracteres() const =0;
virtual int npalabras() const =0;
virtual Componente* copia() const =0;
};
class ComponenteNumero: public Componente
{
public:
ComponenteNumero(int x);
~ComponenteNumero();
string aRistra();
ComponenteNumero(const ComponenteNumero &n);
ComponenteNumero & operator=(const ComponenteNumero &n);
string aRistra() const;
int ncaracteres() const;
int npalabras() const;
Componente* copia() const;
};
no he copiado el resto de componentes, porque son iguales.
componentes.cpp
//FUNCION QUE DA FALLO
string ComponenteNumero::aRistra() const
{
return ristra;
}
y aqui os dejo la de componenteFecha k me da bien
string ComponenteFecha::aRistra() const
{
return ristra;
}
en el main hago:
int main()
{
ComponenteNumero z(2);
z.aRistra();
el constructor tiene como parametro un int, que luego pasa a ser ristra.
sabeis a que se debe dicho fallo?? porque no linka bien?? catualmente estoy usando el Eclipse 3.1 que nos proporcionan en la universidad
gracias de nuevo