c++ - 组合:作为类成员的对象
问题描述
我正在使用组合的概念编写代码:对象作为类的成员,这个错误出现在我身上:[错误]与'操作员<<'不匹配。任何人都可以帮助我吗?当我尝试包含 trabalhador.h 和 trabalhador.cpp 文件时,错误开始出现。如果我尝试在没有这两个文件的情况下编译代码,它可以工作,但我需要 both,因为我试图自己实现这个概念。
这是代码:
//main
#include <iostream>
using std::cout;
#include "trabalhador.h"
int main()
{
cout << "INFORME OS DADOS SOLICITADOS: \n\n";
cout << "Nome do funcionario: ";
info i1;
cout << "CPF: ";
info i2;
trabalhador t(i1, i2);
return 0;
}
//trabalhador.h
#ifndef TRABALHADOR_H
#define TRABALHADOR_H
#include "info.h"
class trabalhador
{
public:
trabalhador (const info &, const info &);
void print () const;
private:
const info funcionarioNome;
const info funcionarioCPF;
};
#endif
//trabalhador.cpp
#include <iostream>
using std::cout;
#include "trabalhador.h"
#include "info.h"
trabalhador::trabalhador (const info &infoNome, const info &infoCPF)
:funcionarioNome (infoNome),
funcionarioCPF (infoCPF)
{
cout << "Dados do funcionario: ";
}
void trabalhador::print() const
{
cout << funcionarioNome << funcionarioCPF;
}
//info.h
#include <string>
using std::string;
#ifndef INFO_H
#define INFO_H
class info
{
public:
info (string = "");
void setInfoDado (string);
void setInfo ();
private:
string infoDado;
};
#endif
//info.cpp
#include <iostream>
using std::cout;
using std::cin;
#include <string>
using std::string;
using std::getline;
#include "info.h"
info::info (string info)
{
setInfoDado (info);
}
void info::setInfoDado (string info)
{
infoDado = info;
setInfo();
}
void info::setInfo ()
{
string nome;
getline (cin, nome);
infoDado = nome;
}
解决方案
operator<<
您需要为您的课程提供重载info
。
对此的要求源于该行
cout << funcionarioNome << funcionarioCPF;
它需要知道如何使用ostream
.
这很简单
class info
{
public:
// ...
friend std::ostream& operator<<(std::ostream& os, info const& inf)
{
os << inf.infoDado;
return os;
}
// ...
};
在此处查看完整代码。
推荐阅读
- javascript - JavaScript:获取对象的属性值
- c# - 优化将数据保存在程序内
- python - 在远程 python 进程上运行 python 代码
- powerbi - 情绪分析 Power BI
- c# - 从 Typescript 调用 C# 类文件
- r - 使用序列命名列表中的数据框
- ios - 如何附加来自 JSON 的数据
- python - 是否可以在不使用 Python 打开对站点的请求的情况下检查某个 url 是否正在重新编辑?
- c++ - c++ 的 gsl_function 替代品
- angularjs - 使用 ng-upgrade 将 Angularrjs 转换为 Angular