2 wyn0222 wyn0222 于 2016.05.08 15:27 提问

C++重载运算符“<<”和“>>”出现错误

主函数中用<<>时
出现错误
no operator defined which takes a right-hand operand of type 'class vsctor' (or there is no acceptable conversion)

#include
using namespace std;
class vsctor
{
public:
vsctor(int z1=0,int z2=0,int z3=0);
void set(int z1,int z2,int z3);
void get(int& a,int& b,int& c) const;
//ostream& operator<<(ostream& os,const vsctor& v);
//istream& operator>>(istream& is,vsctor& v);
private:
int a,b,c;
};
main()
{
int z1,z2,z3,x1,x2,x3,y1,y2,y3;
vsctor v1(1,1,1);
vsctor v2(2,2,2);
cout< vsctor v;
cin>>v;
cout< }
vsctor::vsctor(int z1,int z2,int z3):a(z1),b(z2),c(z3)
{}
void vsctor::set(int x1,int x2,int x3)
{
a=x1;b=x2;c=x3;
}
void vsctor::get(int& z1,int& z2,int& z3) const
{
z1=a;z2=b;z3=c;
}
ostream& operator {
int z1,z2,z3;
v.get(
z1,z2,z3);
os return os;
}
istream& operator>>(istream& is,vsctor& v)
{
int z1,z2,z3;
is>>z1>>z2>>z3;
v.set(z1,z2,z3);
return is;
}

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.05.08 20:11
已采纳

楼主贴一下代码吧,这样很难分析

wyn0222
wyn0222 回复小灸舞: 复制好了
一年多之前 回复
qq423399099
qq423399099 回复wyn0222: 方便的话复制一份,不要截图
一年多之前 回复
wyn0222
wyn0222 贴了
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.05.08 15:32

C++ 中的运算符重载
C++中的运算符重载
C++的运算符重载
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq423399099
qq423399099   Ds   Rxr 2016.05.09 11:22

是要这样吗?

 #include<iostream>
using namespace std;
class vsctor
{
public:
    vsctor(int z1=0,int z2=0,int z3=0);
    void set(int z1,int z2,int z3);
    void get(int& a,int& b,int& c) const;
    //ostream& operator<<(ostream& os,const vsctor& v);
    //istream& operator>>(istream& is,vsctor& v);
private:
    int a,b,c;
};

ostream& operator<<(ostream& os,const vsctor& v);
istream& operator>>(istream& is,vsctor& v);

void main()
{
    int z1,z2,z3,x1,x2,x3,y1,y2,y3;
    vsctor v1(1,1,1);
    vsctor v2(2,2,2);
    cout<< v1;
    cin>>v2;
    cout<<v2; 
}

vsctor::vsctor(int z1,int z2,int z3):a(z1),b(z2),c(z3)
{}
void vsctor::set(int x1,int x2,int x3)
{
    a=x1;b=x2;c=x3;
}
void vsctor::get(int& z1,int& z2,int& z3) const
{
    z1=a;z2=b;z3=c;
}
ostream& operator<<(ostream &os, const vsctor& v){
    int z1,z2,z3;
    v.get(z1,z2,z3);
    printf("%d %d %d\n", z1, z2, z3);
    return os;
}
istream& operator>>(istream& is,vsctor& v)
{
    int z1,z2,z3;
    is>>z1>>z2>>z3;
    v.set(z1,z2,z3);
    return is;
}

图片说明

wyn0222
wyn0222 回复wyn0222: 好了 谢谢
一年多之前 回复
wyn0222
wyn0222 组建时出错 是软件问题吗
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!