嘿。是否可以为原始类型重载operator
std::ostream& operator<<(std::ostream& strm, int & i)
{
strm << i << std::endl;
return strm;
}
但它不起作用。我不记得编译器错误消息,但我认为我以任何方式得到了所有错误的运算符重载。
我尝试以这种方式调用上面重载的运算符
int main()
{
int i = 2;
std::out<<"Here is an int " << i;
return 0;
}
但这根本不起作用。也许我无法重载 POD 类型?
正如 zabzonk 所说,标准库提供了 (ostream&, int) 重载,因此您无法定义另一个。
模拟你正在做的事情(尽管它目前的形式完全没有意义:):
class EndlinedInteger {
public:
EndlinedInteger(int i) : i(i) { }
friend ostream& operator<<(ostream&, EndlinedInteger const&);
private:
int i;
};
ostream& operator<<(ostream& out, EndlinedInteger const& ei) {
out << ei.i << endl;
return out;
}
int main()
{
EndlinedInteger i = 2;
std::cout<<"Here is an int " << i;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)