我正在解析大型 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/