C++ のexceptionクラスのメッセージは単発のメッセージしか格納できないので、catchしてまたthrowするたびに、メッセージを連結できるように拡張しようと思って作ってみました。
class exception_derived : public exception { exception_derived() : exception() { ... } exception_derived(const char *msg) : exception(msg) { ... } (略) }
コンストラクタは
の2つを作りました。メッセージを付けたければ、2番目を呼んで設定します。連結したければ、catchしたexceptionのwhat() が返すメッセージと、適当にくっつけるような使い方を想定していました。
このコードですが、VC8ならばexception(const char *const &) というコンストラクタがあるため問題ありません。しかしg++ 3.3はデフォルトコンストラクタとコピーコンストラクタしかなくて、外からメッセージを設定できませんでした。
exceptionクラスを継承したlogic_errorクラスなどにはlogic_error(const string& __arg) のようなコンストラクタがあるものの、今度はデフォルトコンストラクタがありません。これはexceptionのfriendにして、メッセージを直に書けってことなのかなあ?
< | 2006 | > | ||||
<< | < | 10 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | - | - | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)