後押し::システム:: ERROR_CODEはBoost.Systemの中で最も基本的なクラスです。それは、オペレーティング・システム固有のエラーを表します。オペレーティング・システムは、一般的にエラーを列挙しているので、後押し::システム:: ERROR_CODEはint型の変数にエラーコードが保存されます。
1. ERROR_CODE
<ブースト/システム/ error_code.hpp>含める の#include <iostreamの> 使用して 名前空間のブースト::システム。 無効失敗(ERROR_CODE&EC) { EC = ERRC :: make_error_code(ERRC :: NOT_SUPPORTED)。 } int型のmain() { ECをERROR_CODE。 (EC)が失敗。 std :: coutの << ec.value()<< はstd ::てendl;
std :: coutの<< ec.category()<<はstd ::てendl; リターン 0 ; }
ブースト::システム:: ERRC :: NOT_SUPPORTEDの数であり、ECは型ブースト::システム:: ERROR_CODE、機能ブースト::システム:: ERRC :: make_error_code()が呼び出されるの目的です。この関数は、それぞれのエラーコードで型ブースト::システムのオブジェクト:: ERROR_CODEを作成します。
値()メンバ関数は、オブジェクトに格納されたエラーコードを返します。
タイプのエラーコードは、boost::system::error_code
メンバ関数で取得することができますカテゴリに属していますcategory()
。で作成されたエラーboost::system::errc::make_error_code()
を自動的には、一般的なカテゴリに属しています。これは、彼らが明示的に別のカテゴリに割り当てられていない場合、エラーが属するカテゴリです。
2.エラーのカテゴリを作成します
書式#include <ブースト/システム/ error_code.hpp> の#include < 文字列 > の#include <iostreamの> クラスapplication_categoryに: 公共ブースト::システム:: error_category { 公共: CONST 文字 *名()constの noexcept { リターン " 私のアプリ" 。} std :: 文字列のメッセージ(int型 EV)のconst { リターン " エラーメッセージ" 。} }。 application_categoryに猫; int型のmain() { 後押し::システム:: ERROR_CODE EC(129 、猫); std :: coutの << ec.value()<< はstd ::てendl; std :: coutの << ec.category()名()<< はstd ::てendl; リターン 0 ; }
新しいエラーカテゴリがブースト::システム:: error_categoryから派生したクラスを作成することによって定義されます。これは、様々なメンバ関数を定義する必要があります。それらは、ブーストに純粋仮想メンバー関数として定義されているため、最低でも、メンバ関数名()とメッセージ()が供給されなければならない::システム:: error_category。名前は()エラーカテゴリの名前を返しながら、メッセージは()は、特定のエラーコードのエラーの説明を取得するために使用されます。
3. error_condition
書式#include <ブースト/システム/ error_code.hpp> の#include <iostreamの> 使用して 名前空間のブースト::システム。 無効(失敗ERROR_CODE&EC) { EC = ERRC :: make_error_code(ERRC :: NOT_SUPPORTED)。 } int型のmain() { ECをERROR_CODE。 (EC)が失敗。 ブースト::システム:: error_condition ecnd = ec.default_error_conditionを(); std :: coutの << ecnd.value()<<はstd ::てendl; std :: coutの << ecnd.category()名()<< はstd ::てendl; リターン 0 ; }
後押し::システム:: error_conditionがちょうどブースト::システム:: ERROR_CODEのように使用されます。
クラスは一方でboost::system::error_code
プラットフォーム依存のエラーコードのために使用され、boost::system::error_condition
プラットフォームに依存しないエラー・コードにアクセスするために使用されます。メンバ関数はdefault_error_condition()
タイプのプラットフォームに依存しないエラーコードにプラットフォーム依存のエラーコードを変換しますboost::system::error_condition
。