私はC ++の本の例を見ていきます。そして、特定のケースを理解していませんでした。
main.cpp には、実行時例外を使用するための stdexcept.h が含まれています。また、ErrorHandlingModule.h も含まれます。
ErrorHandlingModule.h には、関数プロトタイプにランタイム エラー パラメーターがあるため、既に stdexcept.h が含まれています。
この本には、main.cpp にも stdexcept.h を含める必要があると書かれています。本のソースコードにもそのように書かれています。
main.cpp から sdtexcept.h を削除すると、コンパイルは問題なくパスし、プログラムは問題なく動作します。
しかし、なぜ本はそう言っているのですか?
回答ありがとうございます。
メイン.CPP:
#include <iostream>
#include <stdexcept>
#include "ErrorHandlingModule.h"
#include "Prompt.h"
// ....
int main(int argc, char* argv[])
{
SAMSErrorHandlingModule::initialize();
do
{
try
{
char Operator = getOperator();
float Operand = getOperand();
cout << Accumulate( Operator, Operand ) << endl;
}
catch( runtime_error RuntimeError )
{
SAMSErrorHandlingModule::handleRuntimeError(RuntimeError);
}
catch(...)
{
SAMSErrorHandlingModule::handleNotaNumberError();
};
}while (SAMSPrompt::UserWantsToContinueYorN("More?"));
return 0;
}
エラー処理モジュール.H
#include <stdexcept>
#ifndef _ERROR_HANDLING_MODULE_H
#define _ERROR_HANDLING_MODULE_H
namespace SAMSErrorHandlingModule
{
using namespace std;
void initialize( void );
int handleNotaNumberError( void );
int handleRuntimeError( runtime_error theRuntimeError );
}
#endif // _ERROR_HANDLING_MODULE_H