我从XML文件读取数据,这取决于xml文件中的标记,数据被附加到类成员变量。class member is not attached C++
是否有可能,例如,xml文件中的值包含“!”,在这种情况下这是无效的,因此我不能接受该值。 因此,该值的成员变量为空。
但某些成员变量的类型是其他类或整数或布尔值。我如何检查这些值是否设置?由于没有这些功能emtpy()
。
我从XML文件读取数据,这取决于xml文件中的标记,数据被附加到类成员变量。class member is not attached C++
是否有可能,例如,xml文件中的值包含“!”,在这种情况下这是无效的,因此我不能接受该值。 因此,该值的成员变量为空。
但某些成员变量的类型是其他类或整数或布尔值。我如何检查这些值是否设置?由于没有这些功能emtpy()
。
如果它们不是可选的,那么当它们不存在时,必须导致解析机制出错。否则,你可以使用类似boost::optional
的东西。
在运行时无法检测变量是否已被明确设置。这就是为什么有些编译器会给你一个警告(不是错误),如果他们怀疑可能会使用未初始化的变量。
程序员有责任跟踪已设置的变量。低级别的做法是使用指针,将它们初始化为0,当它们指向一些已初始化的内存时更改它们,并在它们指向的对象被删除时将它们更改回0。
在C++中,您可以使用Boost.Optional来避免用这种方法搞乱指针。
对不起 - 没有示例代码和您正在使用的解析器,没有人可以帮助您。 – 2012-08-16 11:41:56
请提供一些代码,因为您的描述充其量是令人困惑的,并且根本无法提供建设性的帮助。 – Graeme 2012-08-16 11:52:41
不赞同downvotes。问题中唯一的问题就是术语。我们不会将数据“附加”到成员变量中;我们_assign_它,或者我们_initialize_他们。我们可以检查'int'是否被初始化,这完全可以。 – MSalters 2012-08-16 13:06:50