Mam problem szablonem klasy gdy rozbijam go na dwa pliki, nagłówkowy i źródłowy. Przy kompilacji twierdzi że nie ma referencji do metod. Gdy ten sam kod jest w jednym pliku nie ma problemu z kompilacją i działaniem. Szukam rozwiązania problemu na przykładowym kodzie pokazany poniżej. Jeżeli ta sama klasę zdefiniuje bez szablonu kompilacja przebiega bez problemu.
//main.cpp
#include <iostream>
#include "nowaKlasa.hpp"
int main()
{
dane<bool,3> A("bool",0,1);
dane<float,5> B("float",11.32,0.0101);
dane<int,8> C("int",5,2);
A.drukuj();
B.drukuj();
C.drukuj();
}
//nowaKlasa.hpp
#ifndef KLASA_HPP
#define KLASA_HPP
#include <iostream>
using namespace std;
template<typename liczba, int size>
class dane
{
public:
dane(string,liczba,liczba);
~dane();
void drukuj();
private:
liczba x,y;
liczba *tab;
string nazwa;
};
#endif
//nowaKlasa.cpp
#include "nowaKlasa.hpp"
template<typename liczba, int size>
dane<liczba, size>::~dane()
{
delete [] tab;
cout << "Pamięć<" << this << ">wyczyszczona!" << endl;
}
template<typename liczba, int size>
void dane<liczba,size>::drukuj()
{
cout.setf(ios_base::boolalpha);
cout << nazwa << "(" << x << "," << y << ")" << endl;
cout << "tab: ";
for(int i=0;i<size;i++)
cout << tab[i] << " ";
cout << endl;
}
template<typename liczba, int size>
dane<liczba,size>::dane(string nazwa,liczba x, liczba y)
{
this->x=x;
this->y=y;
this->nazwa=nazwa;
tab = new liczba[size];
}
W czym może być problem? Sposobie wywołania kompilatora? Nie mam pojęcia.