I already checked the FAQ and the first 2 solutions did not work.
The third solution worked, but i want to keep my .h and .cpp files seperate, and know why this actualy occurs.
Here is the code:
// header.h
#pragma once
//////////////////////////////
template <class T>
class base
{
protected:
T data;

public:
T getData();
};

// header.cpp
#include "header.h"
//////////////////////////////
template <class T>
T base<T>::getData()
{
return data;
}

// main.cpp
#include "header.h"
#include <iostream>
using namespace std;

void main()
{
base<int> x;
cout << x.getData();
}