我有一个班级:
class Y{
public:
int x;
Y();
};
主:
int main(){
Y y;
y.x = 10;
y << mystream;
return 0;
}
我只想在键入y<<mystream
时执行任何操作。
我尝试了我的课程标题:
friend Y mystream(Y y);
friend ostream mystream(ostream o, Y y)
等等,但没有什么不起作用。有任何想法来定制这个流吗?
祝你好运!
答案 0 :(得分:1)
您可以重载插入运算符“&lt;&lt;”将class A
对象作为其LHS
和ostream对象作为其rhs
:
class A{
public:
int x;
friend ostream& operator << (A& lhs, ostream& out){
out << lhs.x;
return out;
}
};
int main(){
A a;
a.x = 7;
a << cout; // 7
cout << endl;
return 0;
}
答案 1 :(得分:0)
你必须超载&#39;&lt;&lt;&lt;&#然后,您可以将该类用于自定义输出流。同样,当传递ostream的对象时,请确保它们通过引用传递。您可以参考此网站,例如http://www.geeksforgeeks.org/overloading-stream-insertion-operators-c/
答案 2 :(得分:0)
我不需要:
A a;
cout<<a;
// or
a<<cout;
例如,我可以在main中为cout执行此操作:
ostream& cause(ostream& out)
{
out<<"My stream is here";
return out;
}
int main()
{
cout<<cause; // Print here 'my stream is here'
return 0;
}
我只是想为我的班级而不是std :: cout得到这种行为,所以我想在主要写作:
A a;
a<<cause; // i want to manipulate stream(?)