#include<iostream>using namespace std;#include<cmath>struct point{ double x;double y;};class Quad{ public:Quad( int t1,int t2 ){ a.x=t1;a.y=t2;}point a;};double d( point &a,point &b ){ return sqrt( pow( (a.x-b.x),2) - pow( a.y-b.y,2 ) ); }int main(){ double a,b,c,d,e,f,g,h;while( cin>>a>>b>>c>>d>>e>>f>>g>>h ){ Quad p1( a,b );Quad p2( c,d );Quad p3( e,f );Quad p4( g,h );cout<<fabs( d(p1.a,p2.a)-d(p3.a,p4.a) )<<endl;}}错在哪?
2 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
没试过,但你想一下调用一个类的局部函数的形式应该是 (对象).(函数)()的形式,而你的funcList调用 明显缺少对象.
试了一下简单的例子,可运行成功.
class A
{
public:
bool B(){ return true;}
bool C(){ return false; }
};
void main(int argc, char ** argv)
{
A a;
bool (A::*funTest[2])() = {A::B, A::C}, d[2];
d[0] = (a.*funTest[0])();
d[1] = (a.*funTest[1])();
}
哔哔one
TA贡献1854条经验 获得超8个赞
#include<iostream> using namespace std; #include<cmath> struct point { double x; double y; }; class Quad { public : Quad( int t1, int t2 ) { a.x=t1; a.y=t2; } point a; }; // 函数名为d跟main里面的d同名,不可见。可改为dd double d( point &a,point &b ) { return sqrt ( pow ( (a.x-b.x),2) - pow ( a.y-b.y,2 ) ); } int main() { double a,b,c,d,e,f,g,h; // 变量d跟函数d同名。请改其中之一 while ( cin>>a>>b>>c>>d>>e>>f>>g>>h ) { Quad p1( a,b ); Quad p2( c,d ); Quad p3( e,f ); Quad p4( g,h ); cout<< fabs ( d(p1.a,p2.a)-d(p3.a,p4.a) )<<endl; } } |
添加回答
举报
0/150
提交
取消