c – 用结构(无类)cout样式重载“<<”
作者:互联网
我有一个结构,我想使用’std :: cout’或其他输出流输出.
这可能不使用课程吗?
谢谢
#include <iostream>
#include <fstream>
template <typename T>
struct point{
T x;
T y;
};
template <typename T>
std::ostream& dump(std::ostream &o,point<T> p) const{
o<<"x: " << p.x <<"\ty: " << p.y <<std::endl;
}
template<typename T>
std::ostream& operator << (std::ostream &o,const point<T> &a){
return dump(o,a);
}
int main(){
point<double> p;
p.x=0.1;
p.y=0.3;
dump(std::cout,p);
std::cout << p ;//how?
return 0;
}
我尝试了不同的语法’但我似乎无法使它工作.
解决方法:
也许这是一个复制粘贴错误,但只有一些问题.首先,free-functions不能是const,但你已经标记了dump.第二个错误是转储不返回值,这也很容易解决.修复这些,它应该工作:
template <typename T> // note, might as well take p as const-reference
std::ostream& dump(std::ostream &o, const point<T>& p)
{
return o << "x: " << p.x << "\ty: " << p.y << std::endl;
}
标签:c,operator-overloading,stl 来源: https://codeday.me/bug/20191008/1871011.html