Здравствуйте,помогите пожалуйста.Пытаюсь реализовать шаблонный класс с шаблонными функциями. Не понимаю в чем ошибка при компиляции, подскажите пожалуйста:
Error LNK2019 unresolved external symbol "public: void __thiscall Stack::Push(float)" (?Push@?$Stack@M@@QAEXM@Z) referenced in function _main Calc
и
Error LNK2019 unresolved external symbol "public: float __thiscall Stack::Pop(void)" (?Pop@?$Stack@M@@QAEMXZ) referenced in function _main Calc
Код(header):
#pragma once
template <class T>
struct Element
{
T data;
Element<T>* next;
};
///////////////////////////////////////
template <class T>
class Stack
{
private:
Element<T>* Head;
public:
Stack<T>() {}
~Stack<T>() {}
void Push(T d);
T Pop();
};
Определение методов:
#include "Stack.h"
template<class T>
void Stack<T>::Push(T d)
{
Element* new_Element = new Element;
new_Element->data = d;
new_Element->next = Head;
Head = new_Element;
}
template <class T>
T Stack<T>::Pop()
{
T temp = Head->data;
Element *new_Element = Head;
Head = Head->next;
delete new_Element;
return temp;
}
И main ():
#include "Stack.h"
#include <iostream>
int main()
{
Stack<float> s;
int n;
int value;
std::cout << "How many values will you have?" << std::endl;
std::cin >> value;
for (int i(0); i < value; i++)
{
std::cout << " Enter number: ";
std::cin >> n;
s.Push(n);
}
while (true);
{
std::cout << "Enter symbol (space for exit):";
int choice = getchar();
switch (choice)
{
case '+':
s.Push(s.Pop() + s.Pop());
break;
case '-':
s.Push(-s.Pop() + s.Pop());
break;
case '*':
s.Push(s.Pop()*s.Pop());
break;
case '/':
s.Push(s.Pop() / s.Pop());
/*case '=':
std::cout <<"Result: "<< s.Pop()<<std::endl;
break;*/
case ' ':
exit(-1);
break;
default:
break;
}
}
system("pause");
return 0;
}
Не могу понять в чем проблема......