できるようになりたいこと...
型パラメーターとして渡されたオブジェクトの型に基づいて (名前付き) 共有メモリ プールを設定するテンプレート クラスがあります。おそらくプリプロセッサ演算子などを使用して、型名を「文字列化」し、識別子を追加する方法があるかどうか疑問に思っていましたか?
構文の行に沿ったもの: <classtype>_identifier
どこMyClass<int>
で生成されるint_identifier
か ...
例:
template<typename T>
class MyClass
{
private:
#define TYPENAME_STRING(s) T_#s
std::string m_typeName;
public:
MyClass(std::string objName = "ObjectName")
{
// This:
m_typeName = TYPENAME_STRING(objName.c_str());
// ...Obviously doesn't work, since this is the equivalent of typing:
m_typeName = "T_ObjectName";
// ...When what we really want is something like:
m_typeName = "int_ObjectName";
}
~MyClass();
};
これを機能させると、型パラメーターとして渡されるオブジェクトの型に完全に基づいて、疑似一意メモリ プールの名前付け、作成、および管理を行うのに役立ちます。
このようなことは可能ですか?
また、この型名を解決し、「文字列化」せずに識別子の先頭に追加することはできますか (つまり、という名前 の typedef を作成しますintObjectName
)?