1

MVS2008 で「win32 コンソール アプリケーション」プロジェクトとして作成された巨大な C++ ソリューションがあります。作成中の唯一の追加オプションは「プリコンパイル済みヘッダー」でした。

このソリューションでは、さまざまな方法で定義された大量の列挙型があります。それらは常に.hファイルで定義されますが、名前空間内、クラス内、または名前空間内のクラス内のいずれかで定義できます。

私はよりエレガントな方法で定義したいと思います (ブルートフォースの方法でそれを行う方法は知っていますが、それは DRY ではありませんよね?) 関数:

void myfunc( const char * )

この列挙型の「文字列値」を渡すと、列挙型のすべての「文字列化された」値が出力されます。

正確には、コードのどこかに次のようなものがある場合:

enum Place
{
    Home,
    Work
};

関数に文字列「Place」を渡し、関数に文字列「Home」と「Work」を出力できるようにしたいと考えています。

本当にたくさんの列挙型があるので、可能であれば、それらをあまり変更しないようにしたいと思います。理想的には、まったく変更しないでください。小さなパーサーを考えましたが、これは最適ではないと思います。

ちなみに、Boost とは別の外部のものは使用しないように制限されていますが、マクロは使用できます。列挙型の「ループ」と「列挙型の文字列」内のループの概念を何らかの方法で定義できるようにしたいのですが、その方法がまったくわかりません。

すべてのアイデアを歓迎します。

4

0 に答える 0