我写的类有错误,我不明白是什么问题.
这是工人阶级:
#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
Run Code Online (Sandbox Code Playgroud)
这是这个类的实现:
#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;
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我,请问运营商<<我写的是什么?
您的实现代码中的这一行:
Run Code Online (Sandbox Code Playgroud)std::ostream& Worker::operator<<(std::ostream& os, const Worker& w)
应该:
std::ostream& operator<<(std::ostream& os, const Worker& w)
Run Code Online (Sandbox Code Playgroud)
那是因为它Worker::operator<<是一个成员函数,而不是非成员友元函数,因为你在头文件中正确声明它,如果它是一个成员函数,那么错误信息就意味着它意味着什么.
修复此错误后,您会发现出现了更多错误,因为您的getter成员函数不是const.要修复的另一个错误是__Worker__宏.这样的名称是为实现保留的,并且在名称中使用带小写字母的宏是很奇怪的; 让它像WORKER_H.
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |