Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/12/2010, 16:58
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 8 meses
Puntos: 9
Respuesta: Llamar métodos heredados de una clase template

Pude regenerar el problema para hacerlo más entendible en dev-c++, con código y corto:

BoardBase.h
Código C++:
Ver original
  1. template<class T>
  2. class BoardBase
  3. {
  4.     T value;
  5.    
  6.     public:
  7.     void print();
  8. };

BoardBase.cpp
Código C++:
Ver original
  1. #include "BoardBase.h"
  2. #include <iostream>
  3.  
  4. template<class T> void BoardBase<T>::print()
  5. {
  6.     cout << "Probando print" << endl;
  7. }

Board.h
Código C++:
Ver original
  1. #include "BoardBase.h"
  2.  
  3. class Board : public BoardBase<int>
  4. {
  5.     public:
  6.     void printDerived();
  7. };

Board.cpp
Código C++:
Ver original
  1. #include "Board.h"
  2. #include <iostream>
  3. void Board::printDerived()
  4. {
  5.     cout << "Probando printDerived" << endl;
  6. }

Si en el main llamo a printDerived() todo funciona correctamente. Sin embargo, si llamo a print(), ahora en Dev-C++, me sale el error [Linker error] undefined reference to `BoardBase<int>::print(void)' . Si bien los mensajes no son iguales, el error es equivalente al que obtengo en el compilador para iPhone.
__________________
Add, never Remove