简体   繁体   中英

priority queue not compiling

I am working on creating a priority queue of a class that I have created called Chore. The class just holds the name of a given chore and the priority level of that chore, where a higher number means higher priority. I tested the class with a normal queue and everything worked fine, so I'm guessing the problem lies within my operator overload. The main function creates 5 Chore objects and pushes them into the queue and then outputs the queue in order.

Chore class:

#include <string>
#include <iostream>
class Chore{
    public:
        Chore(std::string s = "N/A", int i = 0){chore = s; pnumber = i;}
        friend bool operator <(Chore c1, Chore c2){
            return c1.pnumber < c2.pnumber;
        }
        void input(){
            std::cout << "Enter type of chore: ";
            std::cin >> chore;
            std::cout << "Enter priority level: ";
            std::cin >> pnumber;
        }
        void output(){
            std::cout << "Chore: " << chore << std::endl << "Priority level: " << pnumber << std::endl;
        }
    private:
        std::string chore;
        int pnumber;
};

main function:

#include <queue>
#include "chore.h"
using namespace std;

int main(){
    priority_queue<Chore> q;
    Chore temp;
    for(int i = 0; i < 5; i++){
        temp.input();
        q.push(temp);
    }
    cout << endl;
    for(int i = 0; i < 5; i++){
        q.top().output();
        q.pop();
    }
}

The error I am getting upon compiling is:

error: passing 'const Chore' as 'this' argument discards qualifiers [-fpermissive]
         q.top().output();

Is the problem my overloaded operator? How can I fix this?

Your output function needs to be const

 void output() const {
            std::cout << "Chore: " << chore << std::endl << "Priority level: " << pnumber << std::endl;
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM