0

これは私のプログラムで、このエラーのために失敗します: 「例外」への参照があいまいです。

何故ですか?

私のクラス名は「例外」で、C++ には「例外」という名前を使用する他の関数が既にあるためですか? たとえば、C++ では「int」を変数として使用できません。このロジックはここにも適用されますか? ありがとうございました。

#include <iostream>
#include <math.h>

using namespace std;

class exception{

public:
    exception(double x,double y ,double z)
    {
    cout<<"Please input a";

    cin>>x;
    cout<<"Please input b";

    cin>>y;
    cout<<"Please input c";

    cin>>z;

    a=x;
    b=y;
    c=z;
    /*
    try{
        int sonsAge = 30;
        int momsAge = 34;
        if ( sonsAge > momsAge){
            throw 99;
        }
    }
    catch(int x)
    {
        cout<<”son cannot be older than mom, Error number :”&lt;<x;
    }
    */
    try {
        if (a==0) {
            throw 0;
        }
        if ((b*b)-(4*a*c)<0) {
            throw 1;
        }
        cout<<"x1 is"<<(-b+sqrt(b*b-4*a*c))/(2*a)<<endl
            <<"x2 is"<<(-b-sqrt(b*b-4*a*c))/(2*a);
    } catch (int x) {
        if (x==0) {
            cout<<"Error ! cannot divide by 0";
        }
        if (x==1) {
            cout<<"The square root cannot be a negative number";
        }
    }
    };

private:
    double a,b,c;
};

int main()
{
    exception ob1(3.2,12.3,412);
    return 0;
}
4

2 に答える 2

5

std::exception標準クラス名です。これは、標準の例外階層の基本型です。として修飾することにより、独自のクラスに名前を付けることができます::exception。これは、 を使用しない優れた理由using namespace stdです。

于 2012-08-19T19:49:51.420 に答える
0

ステートメントによりusing namespace stdstd::exceptionクラスは として解決されexceptionます。次に、同じ名前のクラスを定義します。コンパイラは、これら 2 つのクラスを名前で区別できなくなりましたexception。したがって、名前exceptionはあいまいです。ただし、参照の定義は、std::exception&使用するクラスをコンパイラに正確に伝えるように機能するはずです。

于 2012-08-19T19:50:43.953 に答える