c++ - 成员变量不同 "kinds"的区别

标签 c++ xml c++11 annotations

我正在解析大型 XML 定义文件。 为实现这一点,我已经开始为您在 xml 文件中遇到的每种“类型”创建类。

<Element Factor="10">Whatever</Element>

目前我将 XML 文件中的每个 type 放在它自己的类中,并带有一些运算符和类型的成员。

但是,其中一些类型既有“子元素”又有“属性”。

即:

<MySimpleType min="20" max="100">
    <name>MyName</name>
    <SomeOtherElement>xxxx</SomeOtherElement>
</Mysimpletype>

目前这个类看起来像这样:

class MySimpleType{
    std::string MyName;
    TSomeOtherElement SomeOtherElement;
    int min;
    int max;
}

我想知道是否有一种方法可以对类成员进行注释,以便明确所讨论的成员是属性还是元素。

元素可以有不同的类型(可能是另一个自定义类),属性大多是内置的或 ADT 的。

有没有办法清楚地将成员标记为“元素”或“属性”?

(如果有关系,我使用的是带有内置编译器的 Visual Studio 2015,所以我使用的是 c++11)

最佳答案

您可能有一些包装类型来帮助识别:

template <typename T>
struct attribute { T value; };

等等

struct MySimpleType
{
    std::string MyName;
    TSomeOtherElement SomeOtherElement;
    attribute<int> min;
    attribute<int> max;
};

您可以丰富包装类,使其表现得更像底层类型 (operator T&(), operator = (const T&), ...)

关于c++ - 成员变量不同 "kinds"的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58217326/

相关文章:

c++ - 在模板中将 char 转换为 int 引用

c++ - Visual Studio 线程 - afxwin 还是 C++11 线程?

c++ - 几次比较怎么会比一些计算慢?

c++ - 类成员函数的模板特化,以便不在 bool 上使用增量运算符

C++模板实例化,究竟是什么意思?

xml - 是否有用于二进制 XML 的 Fiddler 插件?

java - Spring - java.io.FileNotFoundException

c++ - MsBuild 任务不会将 native C++ 输出放在 TargetOutputs ItemGroup 中

c++ - 有没有办法禁止转换为 C++ 中非常量的子类?

php - 如何使用 simplexmlelement 在 PHP 中解析 XML?