Что значит ошибка undefined reference to `Stack::push(custumer&)
Stack.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
struct custumer {
char fullname[35];
double payment;
};
typedef custumer Item;
template <typename T> class Stack {
private:
T* stack; // массив указателей на стек
int size;
public:
Stack() { // консуктор по умолчанию
stack = NULL;
int top = 0;
}
~Stack() {
if (size > 0)
delete[] stack;
}
int isempty();
bool push(T& item);
T pop();
int size_stack();
T head();
void Print();
};
Stack.cpp
#include <iostream>
#include <string>
#include "Stack.h"
using namespace std;
template <typename T>
int Stack<T>::isempty() {
return size == 0;
}
template <typename T>
bool Stack<T>::push(T& item) {
T* buffer; // буффер для данных из stack
buffer = stack;
stack = new T[size + 1]; // выделяем память на 1 элемент больше чем было
if (stack == NULL) {
cout << "Error\n";
return false;
}
for (int i = 0; i < size - 1; i++) {
stack[i] = buffer[i];
}
stack[size] = item;
size++; // увеличваем количество элементов
if (size > 0)
delete[] buffer;
return true;
}
template <typename T>
int Stack<T>::size_stack() {
return size;
}
template<typename T>
T Stack<T>::pop() {
if (size == 0) // стек пуст
return 0;
size--;
return stack[size];
}
template<typename T>
T Stack<T>::head() {
if (size == 0)
return 0;
return stack[size - 1];
}
template<typename T>
void Stack<T>::Print() {
T* buff; // указатель для продвижения по стеку
buff = stack;
cout << "Stack" << endl;
if (size == 0)
cout << "Stack is empty" << endl;
for (int i = 0; i < size; i++) {
cout << "items[" << i << "] = " << *buff << endl;
}
cout << endl;
}