I am new to C++ and, for practice, have written my own vector class. The header file, Vector.h, is
#ifndef VECTOR_H_INCLUDED
#define VECTOR_H_INCLUDED
#include <cstddef>
#include <memory>
template <class T> class Vector {
public:
Vector();
~Vector();
// code
};
#endif
The corresponding source file, Vector.cpp, is
#include "Vector.h"
template <class T> Vector<T>::Vector()
{
// code
}
template <class T> Vector<T>::~Vector()
{
// code
}
// code
The test file, VectorDemo.cpp, is
#include "Vector.h"
int main()
{
Vector<int> v;
return 0;
}
In Bash I type
g++ -c Vector.cpp VectorDemo.cpp
g++ -o VectorDemo Vector.o VectorDemo.o
and get the following error
VectorDemo.o: In function `main':
VectorDemo.cpp:(.text+0x27): undefined reference to `Vector<int>::Vector()'
VectorDemo.cpp:(.text+0x38): undefined reference to `Vector<int>::~Vector()'
collect2: error: ld returned 1 exit status
How do I fix this issue and why is this happening?