【发布时间】:2013-02-21 10:01:32
【问题描述】:
在 MFC 应用程序中,我喜欢将 SQL 日期值 (CDBVariant) 映射到 MFC CTime。因为数据库条目可以为NULL(值不存在),我想知道CTime是否可以为空。 remark in the MFC documentation 到 CTime::Format 让我思考,应该是可能的:
如果此 CTime 对象的状态为 null,则返回值为空字符串。
- 但是如何设置这个状态,有可能吗?
- 如果不可能,我想
boost::optional<CTime>会是一个不错的选择吗?
【问题讨论】:
-
默认 ctor 创建一个未初始化的 CTime,因此您可以从中分配。
-
@roger_rowland:我试过
CTime tmp和CTime tmp = CTime()。在这两种情况下,Format都返回 `01.01.1970'(有效日期),而不是文档所述的空字符串。 -
这很痛苦 - 我想下一个最好的方法是将 CTime 和 bool 包装在一个结构中并使用它来代替。使用 bool 标记非空 CTime。有人有其他想法吗?
-
+1 表示
boost::optional。这是最“惯用”的解决方案。 -
使用 COleDateTime。它有一个“状态”属性。其中一个值为 NULL
标签: winapi mfc null nullable ctime