[英]Split string in macro
我有一個帶有名稱空間的類名,例如BasicType::MyType
。
可以創建一個用於拆分名稱並僅在范圍運算符之后使用部分的宏(我想在宏中創建一個MyType
對象,而沒有第一部分)?
編輯:
我在命名空間BasicType
使用具有不同類的庫:
BasicType::ClassA
BasicType::ClassB
...
為了使用這些類,我需要注冊它們。 我必須向另一個類注冊它們,並且它需要該類的名稱,而沒有名稱空間:
BasicType::ClassA classa;
masterClass.register("ClassA", classa);
為了在模板中使用它們(因為我必須使用此命名空間的許多類),我創建了一個特征,該特征通過宏自動執行(由於使用ClassA
我也具有ClassAImpl
, ClassATypeSupport
等):
#define BASICTYPE_TRAITS(className) \
template <> \
struct DDSTraits<className> \
{ \
using TypeSupportImpl = className##Impl; \
using TypeSupport_var = className##TypeSupport; \
};
template <typename T>
struct BASICTYPE_TRAITS
{
};
....
BASICTYPE_TRAITS(BasicType::ClassA) // after this I've my trait
現在,我想在此特征中添加一個帶有類名稱的字符串,以便可以使用它在masterClass
注冊該類
您可以更改宏,使其接受兩個參數:名稱空間名稱和類名稱。 就像是
#define BASICTYPE_TRAITS(namespaceName, className) \
template <> \
struct DDSTraits<namespaceName::className> \
{ \
using TypeSupportImpl = namespaceName::className##Impl; \
using TypeSupport_var = namespaceName::className##TypeSupport; \
};
template <typename T>
struct BASICTYPE_TRAITS
{
};
....
BASICTYPE_TRAITS(BasicType, ClassA) // after this I've my trait
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.