【发布时间】:2018-04-25 02:35:36
【问题描述】:
我写的课程有错误,我不明白是什么问题。
这是工人阶级:
#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;
}
有人可以告诉我操作符
【问题讨论】:
-
朋友不是会员,所以去掉
Worker::前缀。 -
s/
Worker::operator<</operator<< -
与您的问题和问题无关,但以两个下划线开头的符号(如
__Worker__)在所有范围内都保留。请阅读What are the rules about using an underscore in a C++ identifier?了解更多详情。 -
@EliorSastiel:是的,它仍然不起作用,但错误信息会完全不同!当您说它“仍然不起作用”时,请不要忘记提及如此重要的事实。我的回答也解释了如何修复这些其他错误。
标签: c++