Error with Classes

Error with Classes

本文关键字:Classes with Error      更新时间:2023-10-16

我创建了这个代码,我在main的最终cout中面临一个错误。只有当我试图从class Manager打印某些东西时才会出现此错误。我在Stackoverflow上搜索同样的错误,我不得不说很多人都有这个错误,但主要是在模板上,所以这就是为什么我不能在我的情况下采用任何这些解决方案。

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
//Base Class
class Employee {
    private:
        string name;
        double pay;
    public:
        Employee()
        {
            name ="";
            pay = 0;
        }
        Employee(string empName, double payRate){
            name = empName;
            pay = payRate;
        }
        string getName(){
            return name;
        }
        void setName(string empName){
            name = empName;
        }
        double getPay()
        {
            return pay;
        }
        void setPay(double payRate)
        {
            pay = payRate;
        }
        string toString()
        {
            stringstream stm;
            stm <<name<<": "<< pay;
            return stm.str();
        }
};

//derived class
class Manager : public Employee
{
    private:
        bool salaried;
    public:
        Manager(string name, double payRate, bool isSalaried)
           : Employee(name, payRate)
           {
               salaried = isSalaried;
           }
           bool getSalaried()
           {
               return salaried;
           }
};
int main()
{
    Employee emp1("Jane",3500);
    Employee emp2("Bill",3200);
    cout<<emp1.toString()<<endl;
    cout<<emp2.toString()<<endl;
    Manager emp3("Bob",1500,true);
    cout<<emp3.toString()<<endl;
    cout<<emp3.getSalaried<<endl;
    return 0;
}

错误:no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and '<unresolved overloaded function type>')

你在getSalaried中忘记了函数调用后的括号,应该是

cout<<emp3.getSalaried()<<endl;

代替

cout<<emp3.getSalaried<<endl;