0

このコードを確認していただけますか?try / catch / throwの何が問題になっていますか?

#include<iostream>
using namespace std;

int get_input();

int main() {

    int number, base_in, base_out;
    bool pass = 1;

    while(pass) {

        double number, base_in, base_out;

        try {

            cout << "What's your number? ";
            number = get_input();

            pass = 0;

        }
        catch(problem_type()) {
            cout << "Please, write inputs should be integer" << endl;
        }

    }

    return 0;
}


int get_input(bool target = 1) {

    double n;
    cin >> n;

    if(n != (int)n) throw problem_type();

    if(target) {
        if(n<1) throw problem_type();
    }

    return (int)n;

}
4

2 に答える 2

3

タイプ別にキャッチします。好き

catch(const problem_type&){ }

つまり、ifproblem_typeがtypeです。どこにも定義がありません…</p>

于 2012-10-02T16:38:10.143 に答える
0

例外がスローされると、例外に関する情報を含むメモリ内オブジェクトが取得されます...したがって、それを次のように取得する必要がありますcatch( const Type& error )

なんで参考になるの?いくつかの状況でメモリ上にある可能性のあるカオス状態を考えてみてください。コピーを作成すると、複雑さと処理時間が追加され、重要な情報が失われる可能性があります。だからこそ参考にさせていただきます。

元のデータを「ポイント」するだけです。

于 2012-10-02T17:09:47.217 に答える