<<运算符重写为 cout int 和 double 值
我需要重写<<运算符,以便它可以计算小时(int)和温度(double)的值。
我想我已经包含了所有必要的部分。提前致谢。
struct Reading {
int hour;
double temperature;
Reading(int h, double t): hour(h), temperature(t) { }
bool operator<(const Reading &r) const;
};
================
ostream& operator<<(ostream& ost, const Reading &r)
{
// unsure what to enter here
return ost;
}
vector<Reading> get_temps()
{
// stub version
cout << "Please enter name of input file name: ";
string name;
cin >> name;
ifstream ist(name.c_str());
if(!ist) error("can't open input file ", name);
vector<Reading> temps;
int hour;
double temperature;
while (ist >> hour >> temperature){
if (hour <0 || 23 <hour) error("hour out of range");
temps.push_back( Reading(hour,temperature));
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
例如这样:
并且它应该是一个全局函数(或与 Reading 位于同一命名空间中),而不是成员或 Reading ,它应该声明为
friend
如果您打算拥有任何受保护或私人成员。这可以像这样完成:For example like this:
And it should be a global function (or in the same namespace as
Reading
), not a member orReading
, it should be declared as afriend
if you going to have any protected or private members. This could be done like so:你可能想要这样的东西
,尽管这是非常简单的东西,如果它没有意义,你真的应该和某人谈谈或买一本书。
如果它仍然没有意义或者你不想被打扰,请考虑选择另一个爱好/职业。
You probably want something like
This is pretty simple stuff though, and if it doesn't make sense you should really talk to someone or get a book.
And if it still doesn't make sense or you can't be bothered, consider choosing another hobby/career.
IIRC,您可以通过两种方式之一执行此操作...
或者,您可以将运算符添加到您的结构中...
IIRC, you can do it one of two ways ...
or, you can add the operator to your struct ...
在运算符 << 中使用 ost 参数,如 std::cout。
Use ost parameter like std::cout in operator<<.
您已将
hour
和Temperature
声明为Reading
的成员字段,而不是成员方法 >。因此,它们只是r.hour
和r.Temperature
(没有()
)。You've declared
hour
andtemperature
as member fields ofReading
, not member methods. Thus they are simplyr.hour
andr.temperature
(no()
).由于小时和温度是变量而不是函数,因此只需从
operator<<
函数中删除尾随的()
即可。As hour and temperature are variables rather than functions, just remove the trailing
()
from theoperator<<
functions.您可以在 C++ 中重载这样的运算符。
You can overload an operator like this in c++.