c++ - 在宏中拆分字符串

标签 c++ string split macros

我有一个类名及其命名空间,例如 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

关于c++ - 在宏中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867479/

相关文章:

C:如何比较两个字符串?

javascript - 用正则表达式拆分和替换 javascript 中的 unicode 单词

C++ 静态类成员,谁来收拾烂摊子?

c++ - 在 C++ 中有没有什么方法可以防止内存泄漏而不要求开发人员额外注意它

c++ - 为什么我无法更改 `set<set<int>>` 循环中的值

java - 使用 BufferedReader 进行无限循环

c++ - 数组的大小是在编译时确定的吗?

java - 从 PHP 到 Android 的 HTTP 响应字符串

python 在一个字符前重新拆分一个字符串

javascript - 将两个不同的字符串拆分成一个数组?