优先级队列:模板类型的C ++问题

时间:2018-11-09 03:54:16

标签: c++ templates priority-queue abstract-data-type

我正在使用模板创建优先级队列,但是对它们来说我还很陌生,它们给我带来了麻烦。优先级队列在没有模板的情况下工作,但是我试图使其对队列中的任何项目通用。预先谢谢你。

我遇到两个错误,每个错误都有一个注释: “候选模板被忽略:无法推断模板参数'ItemType'”

代码如下:

int main()
{
    int choice, item, priority;
    PriorityQueue pq; 
    do
    {
        cout<<"1.Insert\n";
        cout<<"2.Delete\n";
        cout<<"3.Display\n";
        cout<<"4.Quit\n";
        cout<<"Enter your choice : "; 
        cin>>choice;
        switch(choice)
        {
        case 1:
            cout<<"Input the item value to be added in the queue : ";
            cin>>item;
            cout<<"Enter its priority : ";
            cin>>priority;
            pq.insert(item, priority);
            break;
        case 2:
            pq.del();
            break;
        case 3:
            pq.display();
            break;
        case 4:
            break;
        default :
            cout<<"Wrong choice\n";
        }
    }
   while(choice != 4);
    return 0;
}

这是错误框:

PQ.cpp:99:16:错误:没有匹配的成员函数可调用'del'

        pq.del();
        ~~~^~~

PQ.cpp:44:14:注意:候选模板已忽略:无法推断模板参数'ItemType'

    void del()
         ^

PQ.cpp:102:16:错误:没有匹配的成员函数可调用“显示”

        pq.display();
        ~~~^~~~~~~

PQ.cpp:59:14:注意:候选模板已忽略:无法推断模板参数'ItemType'

    void display()
         ^

1 个答案:

答案 0 :(得分:1)

像这样更改函数调用:

pq.del<int>();
pq.display<int>();
pq.insert<int>(item, priority);