将对象放入地图后打印对象
Printing an object after putting it into a map
class Task
{
public:
string study;
int time;
bool made;
int priority;
}
class Day
{
public:
string date = "undefined";
int aims = 0;
vector <Task> tasks;
}
我有 2 个类,我使用 Vector 来保存两者的数据。 这个项目是一天的日常计划。 现在我需要改进它以存储更多天数,导师希望我使用 MAP。
map<string, Day>Days;
map<string, Day>::iterator it;
Days.insert(pair<string, Day>(s, d));
for (it = Days.begin(); it != Days.end(); ++it)
{
cout << it->first << " " << it->second << 'n';
}
E0349 缺少与这些操作数对应的运算符"<<" C2679 二进制"<<":未找到接受类型为"_Ty2"的右操作数的运算符(或没有可接受的转换( 跟 [_Ty2 = 天] 我该怎么做?
void PrintDay(const Day& d, ChangeF Pd)
{
cout << "Current date:" << d.date << endl << "n=============================================" << endl << "Number of tasks:" << d.aims;
cout << "n=============================================" << endl;
for (int i = 0; i < d.aims; i++)
{
PrintTask(d.tasks[i], Pd);
}
}
Day InputDay()
{
setlocale(LC_ALL, "Russian");
Day d;
cout << "nEnter date dd ENTER mm ENTER yyyy ENTER obe by one" << endl;
int dd, mm, yyyy;
dd = DigitInputCheck(1, 30);
mm = DigitInputCheck(1, 12);
yyyy = DigitInputCheck(0, 4000);
ostringstream WriteDate;
WriteDate << dd << "." << mm << "." << yyyy << endl;
d.date = WriteDate.str();
cout << "Number of tasks:" << endl;
cin >> d.aims;
for (int i = 0; i < d.aims; i++)
{
d.tasks.push_back(InputTask());
}
return d;
}
如注释中所述,如果您要尝试将<<
与类型Day
一起使用,则需要重载operator<<
。由于您已经有PrintDay
,我将对其进行调整以与操作员一起使用。我不知道Pd
应该是什么,所以我忽略了它。此函数应为全局函数。由于您的所有字段都是公共字段,因此也不需要通过friend
进行特殊访问。
std::ostream &operator<<( std::ostream &os, const Day &day ) {
os << "Current date:" << d.date << 'n'
<< "n=============================================n"
<< "Number of tasks:" << d.aims
<< "n=============================================n";
for (int i = 0; i < d.aims; i++)
{
os << d.tasks[i];
}
}
您还需要为Task
类型添加运算符。鉴于上述情况,您应该能够为您的PrintTask
函数创建另一个函数。
相关文章:
- 如何仅使用对象名称打印特定于对象的成员
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数
- 打印抽象对象 c++
- 为什么平均打印数组元素比打印单个对象慢C++?
- 打印指向的对象
- 如何在 c++ 中打印存档中的对象向量
- 如何获取列表的每个对象并调用getName方法来打印其名称
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 将对象放入地图后打印对象
- 打印对象的映射,其中另一个对象作为键
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 如何在C++中打印对象向量的内容
- 打印出对象向量中的每个元素C++
- 对象数组打印空白字符串
- C++ - 打印派生类对象的矢量<base*> 元素
- C++ - 使用 std::list,如何打印对象的私有成员的链接列表?
- 未正确的校验和释放对象 - 打印时错误
- GDB:如何从子对象打印/调用父函数
- 从对象打印二维矢量时出错
- 从对象打印2D int向量