Hola de nuevo:
Aqui estoy con un nuevo problema. Estoy creando un par de clases. Una de ellas maneja char * y la otra es un template que maneja array.
Dentro de la clase char * tengo una función que trocea la cadena, según el parámetro de entrada y devulve un array de subcadenas.
El problema viene al linkar con el programa proncipal ya que me dice que no encuentra la referencia a funciones de la clase array.
Os pongo el código de la función split:
Código C++:
Ver originalarray<cadena> cadena::split(const char c)
{
array<cadena> dummy;
cadena subcadena;
char *aux, *p;
aux = this->_array;
while(p)
{
while (aux < p)
{
subcadena.newElemento(aux[0]);
aux++;
}
dummy.newElemento(subcadena);
aux = p + 1;
}
return dummy;
}
La cabecera de la clase array:
Código C++:
Ver original#ifndef ARRAY_TEMPLATE
#define ARRAY_TEMPLATE
template <class T>
class array {
private:
int elementos;
T *_array;
public:
array();
array(int);
array(int, array<T>);
~array();
int in(T);
int newElemento(T);
int nElementos() {return this->elementos;}
T element(int);
T& operator[](int);
array<T>& operator=(T);
operator int() const {return (0!=elementos);}
};
#endif
Y el programa pincipal:
Código C++:
Ver original#include <stdio.h>
#include "cadena.h"
int main()
{
cadena temp;
temp.str(123);
printf("Cadena: %s", temp.
str());
return 0;
}
Este es el mensaje de salida del compilador:
Código C++:
Ver originaliapellaniz@ia152421:~/Escritorio/aplicacion$ g++ -Wall -o main main.c array.cpp cadena.cpp
/tmp/ccCgVCZ7.o: En la función `cadena::split(char)':
cadena.cpp:(.text+0x9ca): referencia a `array<cadena>::array()' sin definir
cadena.cpp:(.text+0xa3a): referencia a `array<cadena>::newElemento(cadena)' sin definir
cadena.cpp:(.text+0xa9f): referencia a `array<cadena>::~array()' sin definir
collect2
: error
: ld returned
1 exit status
No encuentro el problema porque, tanto en la cabecera de mi clase cadena, como el el .cpp tengo un include "array.h"
Gracias por las posibles respuestas.
Saludos.