我在怀疑关于cin和cout对象的声明。根据我的理解cin和cout这两个对象都可以在main中访问,所以它们不应该有protected.in下面的代码片断我已经重载了输入和输出操作符,并且给该操作符的用户定义的版本赋予新名称(ofstream obj) ,我得到像obj这样的错误是受保护的,无法在这里访问。任何人都可以建议。cin和cout重新声明
#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'做什么?你想在哪里“去”? – crashmstr
您似乎对什么是对象和什么是功能感到困惑。 'ostream obj;'尝试默认构造一个'ostream'类型的对象,这很可能会给你提供你正在谈论的错误。 'operator >>'是一个函数,你不用“给它一个名字”,但是可以用诸如'cout'和's2'这样的参数来调用它。 – jrok
我用g ++运行这段代码,它给出了输出 –