2010-11-26 19 views
0

まあ、私には何が起こっているのかは本当に不思議ですが、私はそれを明確にしようとします。 私はクラスを持っており、ある方法ではスローを定義することにしました(hpp定義とcpp実装で)。 私はstd :: exceptionをスローできるメソッドを持っています。 ここに問題はありません。スローを追加するとC++リンカが失敗する

私は私の例外を作成する方法

class myclass { 
    void mymethod() throw(std::exception); 
} 

class myclass { 
    void mymethod() throw(MyException); // I have included hpp file where MyException is defined 
} 

OK

class MyException : public std::exception { 
public: 
    MyException() throw(); 
    ~MyException() throw(); 
    const char what() const throw(); 
} 

OK、のから私の方法で を、それを使用してみましょう! これは)私が

/tmp/ccwSS5GE.o:(.gcc_except_table+0x84得るものです:collect2は ' MyException用のTypeInfo' へ 未定義の参照:ldは

1つの 終了ステータスを返しましたなぜ?? std :: exceptionを使用するとすべて正常に動作しますが、現在は何も問題ありません。

+2

として定義されている基本クラスのstd ::例外で1に対して共変されていない、あなたのクラスの戻り値の型「のconstのchar」(HTTP [このスレッドは役立つはず]を: //stackoverflow.com/questions/307352/g-undefined-reference-to-typeinfo)具体的に[タイラーMcHenryの答え](http://stackoverflow.com/questions/307352/g-undefined-reference-to-typeinfo/307440#307440)をチェックしてください - それでも解決できない場合は、あなたのコードをすべて表示してくださいどのように使用しようとしていますか? – birryree

+5

リンカーがクラッシュしませんでした。それは単にあなたのプログラムにエラーを報告しました。 –

+1

リンクオーダーはunixで役割を果たします。それを試して? – Muggen

答えて

2

OPコードは、UBのゾーンでは作成されていないため、コンパイルエラーが発生するはずです(リンカエラーを説明している可能性があります)。

あなたの宣言が問題だと思います。

const char what() const throw(); 

virtual const char* std::exception::what() const throw() 
+0

あなたの提案に感謝します。申し訳ありませんが、私は悪いですか? まあ、私はそれを解決することができましたが、それは奇妙です、私はこれらのメソッドの実装を含むcppファイルを作成していない、おそらくこれは本当に怒っているので、スローに遭遇し、彼は良い実装を見つけられず、狂ってしまった。あなたはそれが良い説明だと思いますか? – Andry

関連する問題