C++ VS2010中未解析的外部符号

C++ VS2010中未解析的外部符号,c++,visual-c++,C++,Visual C++,我正在为支持decPrio操作的堆编写代码。但是当我使用代码时,我得到了未解决的外部符号错误 template< typename PRIO, typename VALUE> class Node; template< typename PRIO, typename VALUE, typename CMP = std::less<PRIO> > class FibonacciHeap{ //Interface: //a typedef f

我正在为支持decPrio操作的堆编写代码。但是当我使用代码时,我得到了未解决的外部符号错误

template< typename PRIO, typename VALUE>
class Node;

template< typename PRIO, typename VALUE, typename CMP = std::less<PRIO> >
class FibonacciHeap{

    //Interface:

    //a typedef for a type "item", which acts as a pointer to an element in the queue
    //(item is used below in various methods).

    public:
        typedef Node<PRIO,VALUE>* item;
        typedef int size_t;
        CMP cmp;

    private:
        item m_roots;
        int item_count;

    public:
                void decPrio(item it, const PRIO &prio);
                item insert(const PRIO &prio, const VALUE &value);

        private:

        void link(item x,item y);
        void cut(item x,item y);
        void cascadeCut(item y);
};

template< typename PRIO, typename VALUE>
class Node{

    friend class FibonacciHeap<PRIO,VALUE>;
    int degree;
    bool marked;
    Node<PRIO,VALUE>* parent;
    Node<PRIO,VALUE>* child;
    Node<PRIO,VALUE>* left;
    Node<PRIO,VALUE>* right;

    public:
        PRIO prio;
        VALUE value;
        Node(PRIO p,VALUE v) : 
        degree(0),marked(0), parent(NULL),child(NULL),left(NULL),right(NULL),prio(p),value(v) {}

};

template<typename PRIO,typename VALUE,typename CMP>
void decPrio(typename FibonacciHeap<PRIO,VALUE,CMP>::item it, const PRIO &prio)
{
    if(m_roots==NULL)
        return;

    if(it==NULL)
        return;

    if(!cmp(prio,it->prio))
        return;

    it->prio=prio;
    item y =it->parent;

    if(y!=NULL && cmp(it->prio,y->prio))
    {
        cut(it,y);
        cascadeCut(y);
    }

    if(cmp(it->prio,m_roots->prio))
        m_roots=it;

}
模板
类节点;
模板
类FibonacciHeap{
//接口:
//类型“item”的typedef,用作指向队列中元素的指针
//(以下项目以各种方式使用)。
公众:
typedef节点*项;
typedef int size\u t;
化学机械抛光;
私人:
项目m_根;
国际项目计数;
公众:
12月无效(项目it、持续优先权和优先权);
项目插入(常量优先级和优先级、常量值和值);
私人:
无效链接(项目x、项目y);
空切(项目x、项目y);
空切(y项);
};
模板
类节点{
友人类斐波那契;
智力度;
布尔标记;
节点*父节点;
节点*子节点;
节点*左;
节点*右;
公众:
PRIO PRIO;
价值观;
节点(优先级p,值v):
度(0),标记为(0),父级(NULL),子级(NULL),左级(NULL),右级(NULL),优先级(p),值(v){}
};
样板
void decPrio(typename FibonacciHeap::item it、const PRIO和PRIO)
{
if(m_根==NULL)
回来
if(it==NULL)
回来
如果(!cmp(prio,it->prio))
回来
it->prio=prio;
项目y=it->父项;
如果(y!=NULL&&cmp(it->prio,y->prio))
{
切(it,y);
级联切割(y);
}
if(cmp(it->prio,m_根->prio))
m_根=它;
}
这是我的主要代码

#include<stdio.h>
#include "myfib.h"
using namespace std;

int main(){

    FibonacciHeap<int,int> f;
    FibonacciHeap<int,int>::item temp;

        temp=f.insert(30,1);
    f.decPrio(temp,2);

    return 0;

}
#包括
#包括“myfib.h”
使用名称空间std;
int main(){
斐波那契f;
FibonacciHeap::物料温度;
温度=f.插入件(30,1);
f、 12月(临时,2);
返回0;
}
我收到了错误消息:

错误LNK2019:未解析的外部符号“public:void\u thiscall
FibonacciHeap::decPrio(类节点*,int常量&)
”(?decPrio@$FibonacciHeap@HHU?$less@H@性病病毒$Node@HH@@ABH@Z)在函数_main

模板中引用
template<typename PRIO,typename VALUE,typename CMP>
void decPrio(typename FibonacciHeap<PRIO,VALUE,CMP>::item it, const PRIO &prio)
{
void decPrio(typename FibonacciHeap::item it、const PRIO和PRIO) {
应该是

template<typename PRIO,typename VALUE,typename CMP>
void FibonacciHeap<PRIO,VALUE,CMP>::decPrio(Node<PRIO,VALUE>* it, const PRIO &prio)
{
模板
void FibonacciHeap::decPrio(节点*it、常量PRIO和PRIO)
{