【发布时间】:2013-10-22 12:26:34
【问题描述】:
我对 cin 和 cout object 的声明有疑问。根据我的理解 cin 和 cout 两个对象都可以在 main 中访问,那么它们不应该有 protected.in 下面的代码 sn-p 我已经重载了输入和输出运算符,并且 在为该运算符的用户定义版本提供新名称(ofstream obj)时,我收到错误,例如 obj 受保护且无法在此处访问。任何人都可以建议。
#include<iostream>
using namespace std;
class overload
{
public:
int var_a;
overload (int fun_a=10): var_a(fun_a) {}
friend ostream operator >> (ostream &output, overload &);
friend istream operator << (istream &input, overload &);
};
ostream &operator <<( ostream &output, overload &s1)
{
output<<"value of object output:"<<s1.var_a<<endl;
return output;
}
istream &operator >>( istream &input, overload &s1)
{
input >> s1.var_a;
return input;
}
int main()
{
overload s1,s2;
//ostream obj;
//obj<<"enter the value of object"
cout<<"enter the value of object";
cin>>s2;
cout<<s2;
return 1;
}
【问题讨论】:
-
如果你想输出到屏幕上,你为什么不使用
std::cout,就像你在你的例子中那样?你想用std::ostream obj做什么?你想让它“去”哪里? -
您似乎对什么是对象和什么是函数感到困惑。
ostream obj;尝试默认构造一个ostream类型的对象,这可能会给你你正在谈论的错误。operator>>是一个函数,你不要“给它一个名字”,而是用参数调用它,例如cout和s2。 -
我在 g++ 中运行了这段代码,它给出了输出
-
您的朋友声明与您的实际功能不完全匹配。
-
@aschepler:缺少
&似乎是一个反复出现的问题。