From 39634dc86a3817fa4896f9038436a91bb14f933e Mon Sep 17 00:00:00 2001 From: Little Pan Date: Tue, 27 Oct 2026 10:57:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20XEquipment=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0=20getter=20=E7=9A=84=20M8-M10=20=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - M8 DEF_KEY_FUNC 返回值改为值初始化,键缺失或类型不符时不再返回栈上垃圾值 - M9 getter 内对 m_pXDataMap 判空,避免空 map 构造的 impl 直接崩溃 - M10 GetType 读取 KEY_TYPE 失败时输出日志,不再静默返回 0 - 两份 DEF_KEY_FUNC 定义(XEquipmentImpl.h 与 ParamEquImpl.h)同步修改 --- SourceCode/Code2026/CoreLibrary/Implement/XEquipmentImpl.h | 5 +++-- .../Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp | 3 ++- SourceCode/Code2026/CoreLibrary/ParamEquImpl.h | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/SourceCode/Code2026/CoreLibrary/Implement/XEquipmentImpl.h b/SourceCode/Code2026/CoreLibrary/Implement/XEquipmentImpl.h index 2284973..1f9dfc2 100644 --- a/SourceCode/Code2026/CoreLibrary/Implement/XEquipmentImpl.h +++ b/SourceCode/Code2026/CoreLibrary/Implement/XEquipmentImpl.h @@ -54,8 +54,9 @@ public:\ static const CString key;\ ##type Get##key() const\ {\ - type v;\ - m_pXDataMap->GetAt(key, v);\ + type v = type();\ + if (m_pXDataMap)\ + m_pXDataMap->GetAt(key, v);\ return v;\ } diff --git a/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp b/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp index 66dea0a..3ae34e8 100644 --- a/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp +++ b/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp @@ -132,7 +132,8 @@ int AecDbXEquipment::GetType() const { assertReadEnabled(); int nType = 0; - m_mapSpecXData.GetAt(KEY_TYPE, nType); + if (!m_mapSpecXData.GetAt(KEY_TYPE, nType)) + acutPrintf(_T("\nAecDbXEquipment 缺少设备类型数据(KEY_TYPE),按 0 处理。")); return nType; } diff --git a/SourceCode/Code2026/CoreLibrary/ParamEquImpl.h b/SourceCode/Code2026/CoreLibrary/ParamEquImpl.h index 20899a1..02a377b 100644 --- a/SourceCode/Code2026/CoreLibrary/ParamEquImpl.h +++ b/SourceCode/Code2026/CoreLibrary/ParamEquImpl.h @@ -43,8 +43,9 @@ public:\ static const CString key;\ ##type Get##key() const\ {\ - type v;\ - m_pXDataMap->GetAt(key, v);\ + type v = type();\ + if (m_pXDataMap)\ + m_pXDataMap->GetAt(key, v);\ return v;\ }