为了账号安全,请及时绑定邮箱和手机立即绑定

您好,请问下面关于调用的表达式前的括号必须具有(指针)函数类型,错在哪?

您好,请问下面关于调用的表达式前的括号必须具有(指针)函数类型,错在哪?

白衣染霜花 2021-12-08 15:11:03
#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])();
}

查看完整回答
反对 回复 2021-12-12
?
哔哔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同名,不可见。可改为dddouble d( point &a,point &b )return sqrtpow( (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;   }}



查看完整回答
反对 回复 2021-12-12
  • 2 回答
  • 0 关注
  • 387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信