前几天我们被教导如何让我们的程序重载 cout,但我不知道如何让它输出所有内容。
template <NODETYPE>
friend ostream &operator <<(ostream &, List<NODETYPE>& );
template<typename NODETYPE>
ostream &operator <<(ostream& output, List<NODETYPE>& value)
{
output << value;
return output;
}
但是,我的程序至少要输出 5 个对象,其中两个是双精度对象。我收到一条错误消息,提示“double 不是模板常量参数的有效类型”
我的两个问题是:如何输出所有对象而不仅仅是第一个对象;以及如何让双倍输出。请和谢谢!
编辑:巨大的编辑:::
好的,我意识到我做错了什么,重新排列了我的标题和源文件。
然后我也意识到错过讲师的课是我犯过的最大错误之一。我的下一个错误是给你我所有的假设,而不是我假设的信息。
在我的作业中,它说: • 编写一个赋值运算符和一个友元函数来输出链表。
在我的主要功能(我不允许更改的功能)的几乎所有其他行中,都有一个 cout:
List<int> Li, Li2, Li3;
List<double> Ld, Ld2;
这些是我的对象。我所有的 couts 看起来都是这样的:
cout << "Ld is: " << Ld << endl;
重新排列我的头文件和源文件后,我得到了这个错误:“'std::operator<<[with_Traits = std::char_traits] 中的'operator<<'不匹配(((std :: basic_ostream>&)(& std::cout)), ((const char*) 'Ld 是"))<
对于我拥有的每一个 cout 声明,我都会明白这一点。它比 Ld 退出状态为 1 或其他信息更多,所以我从这里开始。
我仍然不完全热衷于使用这个 ostream 重载功能,所以任何帮助表示赞赏,并非常感谢您抽出宝贵的时间!
编辑:: -
我已经把我几乎所有的代码都放在了这篇文章中:collect2: Ld returned 1 exit status build make error
如果有人可以帮助我解决超载问题,那就太好了,因为我认为这是我剩下的唯一问题,所以我可以弄清楚其他所有问题。
谢谢!!