我上课了:
class Cline
{
public:
Cline ():ax(1),by(1),c(0){}
Cline (double aa, double bb,double cc):ax(aa*(-1)),by(bb),c(cc){
if(by==0){
exit(1);
}
}
Pkt operator* (const Cline & p)
{
if(p.ax != this->ax)
{
Pkt pkt;
double x=this->ax+(p.ax*(-1));
double c=(this->c*-1)+p.c;
pkt.x=c/x;
pkt.y=(this->ax*pkt.x+this->c)/this->by;
return pkt;
}
else
{
cout<<"no connection";
}
}
void setAX(double w){ax=w;}
void setBY(double w){by=w;}
void setC(double w){c=w;}
double getAX(){return ax;}
double getBY(){return by;}
double getC(){return c;}
private:
double ax;
double by;
double c;
};
当我使用两次第二个构造函数时:
int main()
{
Cline z(1,1,1);
Cline w(4,3,-12);
z*w;
return 0;
}
一切正常,但是当我使用第一个和第二个构造函数时:
int main()
{
Cline z();
Cline w(4,3,-12);
z*w;
return 0;
}
我发现错误:
"no match for operators 'z*w' "
有人可以告诉我我做错了什么吗? 我不知道什么时候是我的错误:(
答案 0 :(得分:3)
问题在于,在C ++中,这是一个名为z
的函数的函数声明,它没有参数,并按值返回Cline
:
Cline z();
你需要
Cline z; // C++03 and C++11
或
Cline z{}; // C++11