2010年7月10日土曜日

リフレクション実装を改善してみた。

7月8日のポストで提示したサンプルコードには、ひどい仕様があったため
新しいバージョンのソースをアップします(7月8日の記事へジャンプする)

[サンプルソースをダウンロード]
*このソースを利用した事による一切の現象について責任を負いかねます。

具体的な問題を解説するとクラス要素をリフレクトする際に間違った型で
受けても無理矢理キャストが成立してしまい、結果非常にまずい動作を引き
起こしてしまう可能性がありました。

この対処のために動的な型チェックを行うようにしました。
型チェックはRTTIを使わず独自に実装しています。

class MyObj : public Object
{
  CLASS_DECL( MyObj );
  //...
};

Objectクラスを継承しクラス宣言にマクロ CLASS_DECL(<クラス名>)
配置すれば型チェック機能が有効になります。もちろん、Refelectable
Objectを継承しています。

0 件のコメント:

コメントを投稿