Linking console executable: Z:\code\c++\templates\templates.exe
.objs\main.o:main.cpp:(.text+0x170): undefined reference to `vect_general<int>::vect_general()'
.objs\main.o:main.cpp:(.text+0x182): undefined reference to `vect_general<float>::vect_general()'
.objs\main.o:main.cpp:(.text+0x19c): undefined reference to `vect_general<int>::push(int)'
.objs\main.o:main.cpp:(.text+0x1af): undefined reference to `vect_general<int>::push(int)'
.objs\main.o:main.cpp:(.text+0x1c2): undefined reference to `vect_general<int>::push(int)'
.objs\main.o:main.cpp:(.text+0x1d6): undefined reference to `vect_general<float>::push(float)'
.objs\main.o:main.cpp:(.text+0x1ea): undefined reference to `vect_general<float>::push(float)'
.objs\main.o:main.cpp:(.text+0x1fe): undefined reference to `vect_general<float>::push(float)'
.objs\main.o:main.cpp:(.text+0x210): undefined reference to `vect_general<float>::~vect_general()'
.objs\main.o:main.cpp:(.text+0x222): undefined reference to `vect_general<int>::~vect_general()'
.objs\main.o:main.cpp:(.text+0x25d): undefined reference to `vect_general<float>::~vect_general()'
.objs\main.o:main.cpp:(.text+0x287): undefined reference to `vect_general<int>::~vect_general()'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 12 seconds)
#include <iostream>
using namespace std;
#include "vect_general.h"
//typedef vect_general <int> vi;
//typedef vect_general <float> vf;
int main()
{
int i;
vect_general <int> vi1;
vect_general <float> vf1;
vi1.push(0);
vi1.push(1);
vi1.push(2);
vf1.push(0.05f);
vf1.push(0.15f);
vf1.push(0.25f);
return 0;
}
#ifndef VECT_GENERAL_H
#define VECT_GENERAL_H
#include <vector>
using namespace std;
template <class T>
class vect_general
{
public:
vect_general();
~vect_general();
void push(T elem);
T pop();
//private:
vector <T> v;
};
#endif
#include "vect_general.h"
#include <vector>
using namespace std;
template <class T>
vect_general<T>::vect_general()
{
}
template <class T>
vect_general<T>::~vect_general()
{
}
template <class T>
void vect_general<T>::push(T elem)
{
v.push_back(elem);
}
template <class T>
T vect_general<T>::pop()
{
T temp = v.back();
v.pop_back();
return temp;
}