我从XML文件读取数据,根据xml文件中的标记,数据附加到类成员变量。
例如,xml文件中的值是否包含“!”,在这种情况下无效,因此我无法接受该值。 因此该值的成员变量为空。
但是一些成员变量的类型是其他类或整数或布尔值。如何检查这些值是否已设置?因为那些没有函数emtpy()
。
答案 0 :(得分:2)
如果它们不是可选的,则必须使解析机制在不存在时出错。否则,您可以使用类似boost::optional
的内容。
答案 1 :(得分:0)
您可以在XML读取期间检查XML值以及它是否包含"!"
,为其所有变量分配默认值。
e.g。将ptr设置为nullptr
,将布尔值设置为false
,将int设置为0
或-1
。
尽可能使用const
默认值,这将使您的代码更清晰,更易于维护。
答案 2 :(得分:0)
无法在运行时检测是否已明确设置变量。这就是为什么有些编译器会给你一个警告(而不是错误)的原因,如果他们怀疑某个变量可能未被初始化使用。
程序员有责任跟踪已设置的变量。执行此操作的低级方法是使用指针,将它们初始化为0,当它们指向某些初始化的内存时更改它们,并在它们指向的对象被删除时将它们更改回0。
在C ++中,您可以使用Boost.Optional来避免以这种方式搞乱指针。