Singleton方式c++模板实现,出错

Singleton模式c++模板实现,出错
Singleton.h文件

#include "iostream"

using namespace std;

// Singleton模板类
template <class T>
class Singleton
{
public:
static inline T* getSingletonPtr()
{
if ( NULL == mSingletonPtr)
{
mSingletonPtr = new T;
}
else
{
cout << "Thie Single already exist!" << endl;
}
return mSingletonPtr;
}

protected:
Singleton() {}
~Singleton() {}
static T* mSingletonPtr;
};

// 测试类
class Point
{
public:
Point() {}
~Point() {}
void inline outPut()
{
cout << x << y << endl;
}
void inline setMember(int x,int y)
{
this->x = x;
this->y = y;
}
protected:
private:
int x,y;
};


main.cpp

#include "Singleton.h"

int main()
{

Singleton<Point> pt;
Point* pt1 = pt.getSingletonPtr();
pt1->setMember(5,3);
pt1->outPut();


while (1)
{
}
}

出错:
1>main.cpp
1>d:\program files\microsoft visual studio\myprojects\singleton_test\main.cpp(8) : error C2248: “Singleton<T>::Singleton”: 无法访问 protected 成员(在“Singleton<T>”类中声明)
1>        with
1>        [
1>            T=Point
1>        ]
1>        d:\program files\microsoft visual studio\myprojects\singleton_test\singleton.h(29) : 参见“Singleton<T>::Singleton”的声明
1>        with
1>        [
1>            T=Point
1>        ]
1>d:\program files\microsoft visual studio\myprojects\singleton_test\main.cpp(8) : error C2248: “Singleton<T>::~Singleton”: 无法访问 protected 成员(在“Singleton<T>”类中声明)
1>        with
1>        [
1>            T=Point
1>        ]
1>        d:\program files\microsoft visual studio\myprojects\singleton_test\singleton.h(30) : 参见“Singleton<T>::~Singleton”的声明
1>        with
1>        [
1>            T=Point
1>        ]
1>生成日志保存在“file://d:\Program Files\Microsoft Visual Studio\MyProjects\Singleton_Test\Debug\BuildLog.htm”
1>Singleton_Test - 2 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

请指教
------解决方案--------------------
此时你的Point类是singleton吗, 明显不是, 一般可以这么定义:

// Singleton base class, each class need to be a singleton should