簡體   English   中英

在宏中分割字符串

[英]Split string in macro

我有一個帶有名稱空間的類名,例如BasicType::MyType

可以創建一個用於拆分名稱並僅在范圍運算符之后使用部分的宏(我想在宏中創建一個MyType對象,而沒有第一部分)?

編輯:

我在命名空間BasicType使用具有不同類的庫:

BasicType::ClassA
BasicType::ClassB
...

為了使用這些類,我需要注冊它們。 我必須向另一個類注冊它們,並且它需要該類的名稱,而沒有名稱空間:

BasicType::ClassA classa;
masterClass.register("ClassA", classa);

為了在模板中使用它們(因為我必須使用此命名空間的許多類),我創建了一個特征,該特征通過宏自動執行(由於使用ClassA我也具有ClassAImplClassATypeSupport等):

#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM