模板类的构造函数在类外实现为何出现编译异常

模板类的构造函数在类外实现为何出现编译错误
定义了一个模板类,其构造函数在类内实现,编译就通过,若在其类外实现,编译就出现许多错误,代码如下:
#include<iostream>
#include<vector>
#include"d_except.h"

using namespace std;

template<typename T>
class vPriority_queue
{
public:
vPriority_queue();
/*vPriority_queue():maxIndex(0),recomputeMaxIndex(false)
{}*/                                                                                                         // 在类内实现编译无错误
//默认构造函数,建立一个空的优先级队列
void push(const T& item);
//加入一个优先级为p的元素item
//后置条件:队列增加了一个新元素
void pop(); 
//从优先级队列中删除优先级最高的元素(最大的)
//前提条件:优先级队列不为空,否则产生underflowError异常
T& top();
//返回优先级队列中优先级最高的元素(最大的)
//前提条件:优先级队列不为空,否则产生underflowError异常
const T& top() const;
//top()的常量版本
bool empty();
//优先级队列是否为空
int size()const;
//返回优先级队列中的元素个数
private:
vector<T>pqVector;
//实现优先级队列的向量
int findMaxIndex()const;
//返回pqVector中最大元素的下标
int maxIndex;
//最大元素的下标
bool recomputeMaxIndex;
//是否需要重新计算最大元素的下标
};

template<typename T>
int vPriority_queue<T>::findMaxIndex()const
{
T max=pqVector[0];
int i,j=0;
for(i=1;i<pqVector.size();i++)
{
if(max<pqVector[i])
{
max=pqVector[i];
j=i;
}
}
return j;
}
template<typename T>                         //在类外实现就出现错误
vPriority_queue<T>::vPriority_qpueue():maxIndex(0),recomputeMaxIndex(false)
{}
template<typename T>
void vPriority_queue<T>::push(const T& item)
{
pqVector.push_back(item);
recomputeMaxIndex=true;
}
template<typename T>
void vPriority_queue<T>::pop()
{
if(pqVector.empty())
throw underflowError("优先级队列为空");
if(recomputeMaxIndex==true)
maxIndex=findMaxIndex();
pqVector[maxIndex]=pqVector.back();//将最后一个元素赋到最大元素位置
pqVector.pop_back();  //删除最后一个元素
recomputeMaxIndex=true;
}
template<typename T>
T& vPriority_queue<T>::top()
{
if(pqVector.empty())
throw underflowError("优先级队列为空");
if(recomputeMaxIndex==true)
{
maxIndex=findMaxIndex();
recomputeMaxIndex=false;
}
return pqVector[maxIndex];
}
template<typename T>
const T& vPriority_queue<T>::top() const
{
if(pqVector.empty())
throw underflowError("优先级队列为空");
if(recomputeMaxIndex==true)
{
maxIndex=findMaxIndex();
recomputeMaxIndex=false;
}
return pqVector[maxIndex];
}
template<typename T>
bool vPriority_queue<T>::empty()
{
return pqVector.size()==0;
}
template<typename T>
int vPriority_queue<T>::size() const
{
return pqVector.size();
}
编译时出现的错误如下:error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int;error C2063: “vPriority_qpueue”: 不是一个函数;fatal error C1903: 无法从以前的错误中恢复;正在停止编译。请高师指教。谢谢。
------解决思路----------------------
我就在这网页里搜索"vPriority_queue"发现有个地方没有点亮.模板类的构造函数在类外实现为何出现编译异常
------解决思路----------------------
引用:
我就在这网页里搜索"vPriority_queue"发现有个地方没有点亮.模板类的构造函数在类外实现为何出现编译异常


同意。

睁大眼睛看,单词写错了。
------解决思路----------------------
模板类的构造函数在类外实现为何出现编译异常