0
我有一個名稱空間的類名,如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
爲什麼你需要它?這似乎是一個XY問題。 –
我已編輯帖子。 – Jepessen
爲什麼不接受_two_參數給宏:命名空間名稱和類名? 'BASICTYPE_TRAITS(BasicType,ClassA)' – Petr