0

我从 XML 文件中读取数据,根据 xml 文件中的标签,数据被附加到类成员变量。

例如,如果 xml 文件中的一个值包含“!”是否有可能,在这种情况下它是无效的,因此我不能接受该值。因此该值的成员变量为空。

但是一些成员变量的类型是其他类或整数或布尔值。如何检查是否设置了这些值?因为这些没有功能emtpy()

4

3 回答 3

2

如果它们不是可选的,那么当它们不存在时,您必须使解析机制出错。否则,您可以使用类似boost::optional.

于 2012-08-16T11:41:35.037 回答
0

无法在运行时检测变量是否已显式设置。这就是为什么有些编译器在怀疑某个变量可能未初始化使用时会向您发出警告(不是错误)的原因。

跟踪已设置的变量是程序员的责任。执行此操作的低级方法是使用指针,将它们初始化为 0,在它们应该指向一些已初始化的内存时更改它们,并在它们指向的对象被删除时将它们更改回 0。

在 C++ 中,您可以使用Boost.Optional来避免以这种方式处理指针。

于 2012-08-16T11:56:37.303 回答
0

您可以在 XML 读取期间检查 XML 值,如果它包含"!",则将默认值分配给它的任何变量。

例如,将 ptr 设置为nullptr、 boolean tofalse和 int 设置为0or -1

尽可能使用const默认值,这将使您的代码更清晰,更易于维护。

于 2012-08-16T11:53:02.940 回答