So I am creating a Stack class for an assignment in C++. The core of the assignment is to familiarize us with templates. I have read my book over and over and looked question after question on here.
I need to have my Stack class be able to be constructed by
Stack s2;
but I get an error when I compile my test.cpp and can only compile when i construct as
Stack<T> s1;
where T is a std::string, int, etc. How do build my Stack so I can use both constructors?
Stack.cpp
#include <iostream>
#include <vector>
#include <stdlib.h>
#include <string>
using namespace std;
template<typename T> 
class Stack {
public:
    Stack();
    void Push(T val);
    T Pop();
    void Print();
private:
    vector<T> vecT;
};
template <typename T>
Stack<T>::Stack() { }
template <typename T>
void Stack<T>::Push(T val) { vecT.push_back(val); }
template <typename T>
T Stack<T>::Pop() { vecT.pop_back(); }
template <typename T>
void Stack<T>::Print() {
    cout << "[ ";
    for(int i=0; i<vecT.size(); i++) {
        cout << vecT[i] << " ";
    }
    cout << "]";
}
test.cpp
#include <iostream>
#include <vector>
#include <stdlib.h>
#include <string>
#include "Stack.cpp"
using namespace std;
int main() {
    Stack<string> s1;
        s1.Push("values1");
        s1.Push("values2");
        s1.Print();
    Stack s2;
        s2.Push("values1");
        s2.Push("values2");
        s2.Print();
}
 
     
     
    