C++ 操作员<&书信电报;必须只接受一个参数

C++ 操作员<&书信电报;必须只接受一个参数,c++,C++,我写的课程有一个错误,我不明白问题出在哪里 这是工人阶级: #ifndef __Worker__ #define __Worker__ #include <iostream> #include <string> class Worker{ protected: std::string name; int id; int salary; public: Worker(const std:

我写的课程有一个错误,我不明白问题出在哪里

这是工人阶级:

#ifndef __Worker__
#define __Worker__

#include <iostream>
#include <string> 

class Worker{
    protected:
        std::string name;
        int id;
        int salary;

    public:
        Worker(const std::string& name, int id, int salary);
        Worker(const Worker& worker );
        friend std::ostream& operator<<(std::ostream& os, const Worker& w);
        int getWorkerID(){
            return this->id;
        }
        int getsSalary(){
            return this->salary;
        }
        std::string getname(){
            return this->name;
        }

};
#endif
\ifndef\uu工人__
#定义\uuuu工作者__
#包括
#包括
班主任{
受保护的:
std::字符串名;
int-id;
国际工资;
公众:
工人(const std::字符串和名称、整数id、整数工资);
工人(施工工人和工人);
friend std::奥斯特雷姆和运营商实验室;
}
std::string getname(){
返回此->名称;
}
};
#恩迪夫
这是这个类的实现:

#include "Worker.hpp"

Worker::Worker(const std::string &names, int ids, int salarys) :
name(names), id(ids), salary(salarys)
{
}

Worker::Worker(const Worker &worker): 
name(worker.name), id(worker.id), salary(worker.salary)
{

}


std::ostream& Worker::operator<<(std::ostream& os, const Worker& w)  
{  
    os << "worker name:" << w.getname() << " id:" << std::to_string(w.getWorkerID()) << " salary:"<<std::to_string(w.getsSalary()) ;  
    return os;  
}
#包括“Worker.hpp”
Worker::Worker(const std::string&name、int-id、int-salary):
姓名、身份证、工资
{
}
工人::工人(施工工人和工人):
姓名(worker.name)、id(worker.id)、工资(worker.salary)
{
}

std::ostream&Worker::operator实现代码中的这一行:


std::ostream&Worker::operatorA friend不是成员,因此只需删除
Worker::
前缀.s/
Worker::operator可能与您的问题和问题无关,但以两个下划线开头的符号(如
\uuuuuuuuuuuuuuuuuuuuuu
)在所有作用域中都保留。请阅读以了解更多详细信息。@Eliorstiel:是的,它仍然不起作用,但错误消息将完全不同!当你说它“仍然不起作用”时,请不要忘记提及这样一个重要的事实。我的回答也解释了如何修复其他错误。
std::ostream& Worker::operator<<(std::ostream& os, const Worker& w)  
std::ostream& operator<<(std::ostream& os, const Worker& w)