2009-08-28 10 views
2

結果が正しいタイプ(int、float、doubleなど)であるかどうかをチェックし、そうでない場合に例外をスローしてキャッチしますか?C++でタイプエラーをキャッチ

ありがとうございます。

Vlad

答えて

4

あなたが「結果」を提供していることについて、あなたがそこから必要と思われるものをより適切に判断することができるかもしれないことについてより詳細を教えてください。

実際にタイプを確認したい場合は、typeidを使用してください。 詳細情報here

実際に何かを述べた後、質問に答えるために編集記事のダニエルのモデルに続いて...私の他のコメントから

:あなたは を持って前にこれをしなければならない

ただの結果。オーバーフローを確認するのは良い考えではありません。彼らはオーバーフローする かどうかを確認、または タイプ

+0

あなたの答えをありがとう、アダム。 – Vlad

4

C++で実行時にそれを知る方法はありません。これらはコンパイル時エラーです。

2番目の質問に答えるには、手動でバッファオーバーフロー/アンダーフローをチェックするか、より適切なデータ型を使用する必要があります。

+4

1の半分の最大値よりも小さくなるように入力 を制限するために追加する前に、数字のチェック を行いませんが、それは全く逆だ - ほとんどがありますそれ以外の場合はコードがコンパイルされないため、実行時にそれを知ることはできません。 –

+0

テンプレートインスタンスを使用する場合を除き、テンプレートパラメータはクラス/タイプになり得ます。テンプレートが書かれました。 – suszterpatt

+2

しかし、テンプレートは実行時にはありません。コンパイル時にも生成されます。 –

0

最も近い数字はdynamic_castです。

+2

dynamic_castは組み込み型では機能しません。これは、多態型への参照/ポインタに対してのみ機能します。 –

+0

これは、あなたが得る*最も近い*はdynamic_castです(答えはdynamic_castではなく、違いに注意してください)。私はdynamic_castについて言いました。なぜなら、OPが組み込みの組み込み関数を要求しているのか、より大きな型の組み込み関数を要求しているのか分かりませんでした。 –

関連する問題