質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

993閲覧

GUIのエラーメッセージ管理について

__ook

総合スコア49

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/08/03 02:54

GUIのソフトウェアを作成する場合、ユーザにエラーや警告を通知するかと思います。
その際、コード内にエラーメッセージを埋め込んでしまうと、エラーメッセージに変更があった場合などに埋め込み箇所すべてを変更する必要があります。
エラーコードでメッセージを呼び出そうと考えているのですが、よい方法はありますか?

現在考えているのはmap<int, std::string>で数字をキーにして文字列を取得しようと考えていますが、よりいい方法がある、もしくはこの方法に問題があるなら知りたいのです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

map で対応付けるのは十分に良い方法のひとつだと思います。

ただ、 GUI の構築になんらかのフレームワークを使うのであればそのフレームワークの習慣に従うのが無難です。 現代的なフレームワークであれば多言語対応 (言語の切り替え) の仕組みがあるのが普通なのでそれに乗っかれば、実際に提供するのがひとつの言語だけだとしてもメッセージ管理に有用になりうるかもしれません。

投稿2020/08/03 04:08

SaitoAtsushi

総合スコア5466

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

__ook

2020/08/03 04:24

使用しているフレームワークがかなり古いものでいまいちメッセージ管理に使用できそうなものがないのです… メッセージを呼び出すときに「error_message[1]」のように書くのが何となくよくない気がして質問いたしました。これは特に悪いわけではないということですね。
SaitoAtsushi

2020/08/03 04:52

何を意味するかその場で読み取れない番号をそのまま書くのは (エラーメッセージに限らず) すごく悪い方法なのでそこは改善が必要です。
__ook

2020/08/03 05:04

クラスを作成しenum classなどでマジックナンバーを防いで関数化することにしました。ありがとうございました。
guest

0

ベストアンサー

エラー番号とメッセージの対応表として map<int,string> を利用するのは至極まっとうで、問題があるとは思えません。

投稿2020/08/03 03:49

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

__ook

2020/08/03 04:24

メッセージを呼び出すときに「error_message[1]」のように書くのが何となくよくない気がして質問いたしました。これは特に悪いわけではないということですね。
episteme

2020/08/03 04:28

string getErrorMessage(int error_code) なんて関数のカワかぶせておけば、 SaitoAtsushiさんの指摘にあるような多言語対応にもできて便利かも。 # 対応表 map<int,string> をこしらえるときに言語設定に対応すればいいっちゃいいけど
__ook

2020/08/03 04:33

たしかにそんな関数にしてしまえばいい感じに使える気がしてきました。ありがとうございます。
episteme

2020/08/03 07:17

error_message[error_code] だと 未定義なerror_codeに対し "" が返ってきちゃうし。 ”そんなエラー知らネ"って返ってきてほしいよね。
__ook

2020/08/03 08:38

たしかにそうですね。 そのままmapを使用するとそうなってしまうのでうまくラップした関数を作成することにします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問