2012-08-16 66 views
0

我從XML文件讀取數據,這取決於xml文件中的標記,數據被附加到類成員變量。class member is not attached C++

是否有可能,例如,xml文件中的值包含「!」,在這種情況下這是無效的,因此我不能接受該值。 因此,該值的成員變量爲空。

但某些成員變量的類型是其他類或整數或布爾值。我如何檢查這些值是否設置?由於沒有這些功能emtpy()

+1

對不起 - 沒有示例代碼和您正在使用的解析器,沒有人可以幫助您。 – 2012-08-16 11:41:56

+1

請提供一些代碼,因爲您的描述充其量是令人困惑的,並且根本無法提供建設性的幫助。 – Graeme 2012-08-16 11:52:41

+0

不贊同downvotes。問題中唯一的問題就是術語。我們不會將數據「附加」到成員變量中;我們_assign_它,或者我們_initialize_他們。我們可以檢查'int'是否被初始化,這完全可以。 – MSalters 2012-08-16 13:06:50

回答

2

如果它們不是可選的,那麼當它們不存在時,必須導致解析機制出錯。否則,你可以使用類似boost::optional的東西。

0

您可以在XML讀取過程中檢查XML值,如果它包含"!",則將默認值分配給它所在的任何變量。

例如將ptr設置爲nullptr,布爾值爲false,並將int設置爲0-1

使用const默認值,只要你可以,這將使你的代碼更清晰,更容易維護。

+0

這個問題被標記爲C++,所以你可以而且應該使用'const'變量而不是'#define'。例如。不要使用NULL而是使用nullptr。 – MSalters 2012-08-16 13:08:37

+0

@ MSalters,這是正確的,我更新了我的文章。來自C .. – fduff 2012-08-16 13:50:35

0

在運行時無法檢測變量是否已被明確設置。這就是爲什麼有些編譯器會給你一個警告(不是錯誤),如果他們懷疑可能會使用未初始化的變量。

程序員有責任跟蹤已設置的變量。低級別的做法是使用指針,將它們初始化爲0,當它們指向一些已初始化的內存時更改它們,並在它們指向的對象被刪除時將它們更改回0。

在C++中,您可以使用Boost.Optional來避免用這種方法搞亂指針。