私はC++学習の初心者で、 '< <'と '>>'についていくつか質問があります。 なぜcoutの結果が正しくないのですか?同時に、私はcの座標を入力した後、プログラムは凍結しました。 コード:C++演算子のオーバーロードについての質問
class Vector
{friend istream &operator >> (istream &is,Vector &vec);
friend ostream &operator << (ostream &os,Vector &vec);
private:
int num;
double *cor;
public:
Vector(int n=0,double *c=NULL);//
};
int main()
{ double b[5]={1,2,3,4,5};
Vector a(5,b);
cout<<a;
Vector c(2);
cin>>c;
}
Vector::Vector(int n,double *c)
{
num=n;
double *cor=new double[num];
if (c) {
for (int i=0;i<n;i++) {cor[i]=c[i];cout<<cor[i]<<endl;}
}
}
istream &operator >> (istream &is,Vector &vec)
{ cout<<"Input the coordinate:";
for (int i=0;i<vec.num;i++)
is>>vec.cor[i];
return is;
}
ostream &operator << (ostream &os,Vector &vec)
{
for (int i=0;i<vec.num;i++){
os<<vec.cor[i];}
return os;
}
問題とは無関係です。ストリーミングオペレータは通常、ユーザーと対話しません。あなたの実装はファイルから読み込んでいてもメッセージを出力します。 – molbdnilo