Cześć, mam program który posiada klasę Pojazd. Klasa pojazd posiada składowe int przebieg, float cena, są one prywatne. Chciałem stworzyć metodę szablonową, która zwraca te dwie składowe i można ją wywołać z main w którym przechowuję Pojazdy w wektorze parkingFabryka. Napisałem taki kod, ale niestety wyskakuję błąd. (Cały program ma ponad 1000 linijek, więc poniżej jest tylko uproszczony kod)
Plik Pojazd.h
class Pojazd
{
public:
template<typename T>
T zwroc(char info);
protected:
float cena;
int przebieg;
};
Plik Pojazd.cpp
template<typename T>
T Pojazd::zwroc(char info)
{
switch (info)
{
case 'c':
return cena;
case 'p':
return przebieg;
}
}
Plik main.cpp
vector<unique_ptr<Pojazd>> parkingFabryka;
cout << "Przebieg" << parkingFabryka[0]->zwroc<int>('p') << endl; //tutaj wyskakuje poniższy bład
cout << "Cena" << parkingFabryka[0]->zwroc<float>('c') << endl; //to tez nie dziala
Błąd
C:/Users/Dell/Documents/Program/main.cpp:342: undefined reference to `int Pojazd::zwroc<int>(char)'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.