我在懷疑關於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 ++運行這段代碼,它給出了輸出 –