Czołem programiści ! Mój problem : undefined reference to wektor<int>::wektor()
Bawię się właśnie szablonami w c++ i gdy naprzykład dam wszystko do jednego pliku to program kompiluje się, ale gdy właśnie rozdziele go na pliki to wyskakuje ten błąd.
Kodzik:
main.cpp:
#include <iostream>
#include "vector.h"
#include <conio.h>
#include <windows.h>
using namespace std;
int main()
{
wektor <int> abc;
while (true)
{
cout << "MENU" << endl;
cout << "1. wyswietl liczby"<<endl;
cout << "2. wstaw element do pocz¹tkowej vectora"<<endl;
cout << "3. dodaj elemnt na koniec vectora"<<endl;
cout << "4. ustaw element podajac indeks vectora"<<endl;
cout << "5. pobierz vectora i go wyswietl"<<endl;
cout << "wybor: "<<endl;
char wybor=getch();
switch(wybor)
{
case '1':
{
abc.wyswietl();
break;
}
case '2' :
{
abc.wstaw();
break;
}
case '3':
{
abc.dodaj();
break;
}
case '4':
{
cout<<"Jaki index: ";
int inuxior;
cin>>inuxior;
cout<<"Jaka wartosc: ";
int wart;
cin>>wart;
abc.ustaw(inuxior,wart);
break;
}
case '5':
{
cout<<"Podaj index vectora którego chcesz wyswietlic: ";
int iglotex;
cin>>iglotex;
abc.pobierz(iglotex);
break;
}
default :
{
abc.~wektor();
exit(0);
}
}
}
return 0;
}
vector.h:
#include <iostream>
#include <vector>
using namespace std;
template <typename T> class wektor
{
private:
vector<T> wiktor;
public:
wektor();
wektor(const wektor &biere);
~wektor();
T pobierz(T indeks);
T ustaw(T idx, T wartosc);
T dodaj();
T wstaw();
T wyswietl();
};
vector.cpp:
#include <iostream>
#include "vector.h"
using namespace std;
template <typename T>wektor<T>::wektor()
{
for(int i=0; i<=32; i++)
{wiktor.push_back(0);}
}
template<typename T>T wektor<T>::pobierz(T indeks)
{
cout<<"Indeks: ";
cout<<indeks;
cout<<" Wartosc: ";
cout<<wiktor[indeks]<<endl;
}
template <typename T>T wektor<T>::ustaw(T idx,T wartosc)
{
if(idx>wiktor.size())
{
cout<<"Odmowa dostepu vector nie jest tak duzy!"<<endl;
}
else {wiktor[idx]=wartosc;cout<<"Pomyslnie ustawiono wartosc do wektora "<<idx<<endl;}
}
template <typename T>T wektor<T>::dodaj()
{
wiktor.push_back(0);
}
template <typename T>T wektor<T>::wstaw()
{
wiktor.push_back(0);
for(int j=1; j<=wiktor.size()-1; j++)
{
swap(wiktor[j],wiktor[j+1]);
j=j+1;
}
}
template <typename T>T wektor<T>::wyswietl()
{
for(int i=1; i<=wiktor.size(); i++)
{
cout<<wiktor[i]<<endl;
}
}
template <typename T>wektor<T>::~wektor()
{
wiktor.clear();
cout<<"DESTRUKCJA HEHEHEHHE"<<endl;
}
Prosiłbym o to, żeby ktoś wytłumaczył mi, dlaczego tak się dzieje, i dlaczego, gdy wrzuce wszystko do main.cpp zamiast dzielić to na pliki to wszystko jest ok. Dodałem szablony, ponieważ robie ćwiczenie z książki. Jak to naprawić ?