我写的这个课有错误,我不明白这是什么问题。
这是工人阶级:
#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
这是本课程的实施:
#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;
}
有人可以告诉我什么与运营商&lt;&lt;我写的?
答案 0 :(得分:5)
您的实施代码中的这一行:
std::ostream& Worker::operator<<(std::ostream& os, const Worker& w)
应该是:
std::ostream& operator<<(std::ostream& os, const Worker& w)
那是因为Worker::operator<<
是一个成员函数,而不是非成员友元函数,因为你在头文件中正确声明了它,如果它是一个成员函数,那么错误信息就意味着它意味着什么。 / p>
修复此错误后,您会发现出现了更多错误,因为您的getter成员函数不是const
。要修复的另一个错误是__Worker__
宏。这样的名称是为实现保留的,并且在名称中使用带小写字母的宏是很奇怪的;使它像WORKER_H
。