linux c++ throw 一个指定的异常,帮看看c++异常捕获try{}catch{}throw为什么throw不能返回一个具体对象...

请诸位看一下为什么会这样!

exc_mean.hpp

#include

using namespace std;

class bad_hmean

{

private:

double v1;

double v2;

public:

bad_hmean(int a=0,int b=0):v1(a),v2(b){}

void mesg();

};

inline void bad_hmean::mesg()

{

cout<

<

}

class bad_gmean

{

public:

double v1;

double v2;

bad_gmean(double a=0,double b=0):v1(a),v2(b){}

const char* mesg();

};

inline const char* bad_gmean::mesg()

{

return "gmean () srguments should be >0 \n";

}

error4.cpp

#include

#include

#include"exc_mean.hpp"

using namespace std;

double hmean(double a,double b);

double gmean(double a,double b);

int main()

{

double x,y,z;

cout<

while(cin>>x>>y)

{

try

{

z=hmean(x,y);

cout<

cout<

cout< : ";

}

catch(bad_hmean &bh)

{

bh.mesg();

cout<

continue;

}

catch(bad_gmean &bg)

{

cout<

cout<

cout<

break;

}

}

cout<

return 0;

}

double hmean(double a,double b)

{

if(a==-b)

//原句如下,编译运行没问题

//将此句替换成右边的两句,编译错误                 // bad_hmean A=bad_hmean(a,b);

throw bad_hmean(a,b);                                     //throw A;

return 2.0*a*b/(a+b);

}

double gmean(double a, double b)

{

if(a<0||b<0)

throw bad_gmean(a,b);

/* bad_gmean B=bad_gmean(a,b);//

throw B;*/

return sqrt(a*b);

}

报错如下:

error4.cpp:50:11: error: use of undeclared identifier “A”

throw A;

^

error4.cpp:57:11: error: use of undeclared identifier “B”

throw B;

^

2 errors generated.

怎么还说使用未声明的标示符 A和B

本人不是已经创建了A B这两个对象了吗?

到底怎么回事?

求指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值