I am learning how to use template in c++ language ,my program is just simple linear search program which i use just for understanding purpose while compiling the program compiler constantly giving me this linker error
Error 1 error LNK2019: unresolved external symbol "public: __thiscall searching<int>::searching<int>(int)" (??0?$searching@H@@QAE@H@Z) referenced in function _main C:\Users\Sachin\Documents\Visual Studio 2012\C++\template\template\Source.obj template
Error 2 error LNK2019: unresolved external symbol "public: __thiscall searching<int>::~searching<int>(void)" (??1?$searching@H@@QAE@XZ) referenced in function _main C:\Users\Sachin\Documents\Visual Studio 2012\C++\template\template\Source.obj template
Error 3 error LNK2019: unresolved external symbol "public: void __thiscall searching<int>::set_data(void)" (?set_data@?$searching@H@@QAEXXZ) referenced in function _main C:\Users\Sachin\Documents\Visual Studio 2012\C++\template\template\Source.obj template
Error 4 error LNK2019: unresolved external symbol "public: void __thiscall searching<int>::get_data(void)" (?get_data@?$searching@H@@QAEXXZ) referenced in function _main C:\Users\Sachin\Documents\Visual Studio 2012\C++\template\template\Source.obj template
Header.h
#include<iostream>
using namespace std;
typedef int BOOL;
#define TRUE 1
#define FALSE 0
template <class t>
class searching
{
private :
t *ptr;
int isize;
BOOL sort;
public:
searching(int);
searching(searching &);
~searching();
BOOL linearsearch(t);
BOOL linearsearchbi(t);
BOOL binarysearch(t);
void set_data();
void get_data();
BOOL chechsorted();
};
main.cpp
#include "Header.h"
int main()
{
searching <int>obj1(10);
//searching <float>obj2;
obj1.set_data();
obj1.get_data();
obj1.linearsearch(5);
return 0;
}
helper.cpp
#include"Header.h"
template <class t>
searching <t>::searching(int ino)
{
isize =ino;
ptr= new <t> [isize];
}
template <class t>
searching <t> ::searching(searching &ref)
{
isize=ref.isize;
ptr=new <t>[isize];
for(int i=0;i<isize;i++)
{
ptr[i]=ref.ptr[i];
}
}
template <class t>
searching <t>::~searching()
{
delete []ptr;
}
template <class t>
void searching <t>::set_data()
{
cout<<"Enter "<<isize<<" element"<<endl;
for(int i=0;i<isize;i++)
{
cin>>ptr[i];
}
}
template <class t>
void searching <t> ::get_data()
{
cout<<"Eelements are :"<<endl;
for(int i=0;i<isize;i++)
{
cout<<ptr[i]<<endl;
}
}
template <class t>
BOOL searching <t>::linearsearch(t value)
{
int i=0;
for(i=0;i<isize;i++)
{
if(ptr[i]==value)
break;
}
if(i==isize)
{
return FALSE;
}
else
{
return TRUE;
}
}
I have tried moving all the definitions from the helper.cpp to header under class but compiler still gives me error is there any thing i need to change in this code please guide me. Thanks in advance.