Garbage Collection

塵も積もれば山

目次

Blog 利用状況

ニュース

C++とかC#とか数学ネタを投下していく予定です。

[その他のページ]
日々の四方山話を綴った日記出水の日記帳

書庫

日記カテゴリ

[C++]鏡の中のリフレクション

前回の続きです。

 

関数だって呼べちゃいます。

void Func_Apple();
void Func_Grape();
void Func_Banana();
#define X(A) Func_##A
void (*func[])() = {
#include "Fruits.lst"
};
#undef

これで、enumが定義されていれば、こんな感じで関数が呼べます。

func[Banana]();

 

さらに、クラスも作れちゃいます。

class CApple: public Fruits {...};
class CGrape: public Fruits {...};
class CBanana: public Fruits {...};
template <class T>
Fruits *createFruits{ return new T;};
#define X(A) createFruits<C##A>
Fruits *(*create[])() = {
#include "Fruits.lst"
};
#undef

これで、Appleの名前でCAppleクラスが作れるようになります。

Fruits *fruits = create[Apple]();

ということで、C++でもリフレクションのように文字列からクラスを生成する方法でした。

(結局これが書きたかった。)

 

使いどころは…あるような…ないような…。

以前に使ったことはあるんですけど…結局良かったのやら悪かったのやら。

投稿日時 : 2008年6月4日 21:46

Feedback

# re: [C++]鏡の中のリフレクション 2008/06/04 22:01 中博俊

アクトレスじゃないんですね。わかりました。

# re: [C++]鏡の中のリフレクション 2008/06/05 2:26 出水

タイトルはフィーリングで決めているんで
あんまり元ネタは在ったり無かったり

# re: [C++]鏡の中のリフレクション 2008/06/05 9:11 ゆーち

なるほどー。
ものすごく感心。
使いこなしてますねー。

なにか書きたくなってきました。(謎

タイトル
名前
Url
コメント