From 4ca5893800ecb2f4546303810f4b2b2b1a9eebac Mon Sep 17 00:00:00 2001 From: gaozheng Date: Fri, 12 Jun 2026 08:20:20 +0800 Subject: [PATCH] =?UTF-8?q?harden(controller):=20ChartStrategyRegistry=20?= =?UTF-8?q?=E6=98=BE=E5=BC=8F=E7=A6=81=E6=8B=B7=E8=B4=9D/=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E7=A7=BB=E5=8A=A8=EF=BC=88=E4=BF=9D=E6=8A=A4=20find()?= =?UTF-8?q?=20=E8=A3=B8=E6=8C=87=E9=92=88=EF=BC=8C=E8=AF=84=E5=AE=A1=20I-1?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/IDatasetChartStrategy.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/controller/IDatasetChartStrategy.hpp b/src/controller/IDatasetChartStrategy.hpp index 115d791..29c1452 100644 --- a/src/controller/IDatasetChartStrategy.hpp +++ b/src/controller/IDatasetChartStrategy.hpp @@ -15,6 +15,15 @@ struct IDatasetChartStrategy { class ChartStrategyRegistry { public: + ChartStrategyRegistry() = default; + // 禁拷贝(含 unique_ptr,本就不可拷贝;显式 delete 让意图清晰)。 + // 保留移动:map 移动只搬节点,find() 返回的裸指针指向的策略对象地址不变、仍有效; + // 且测试 makeInversionRegistry() 按值返回需要移动。 + ChartStrategyRegistry(const ChartStrategyRegistry&) = delete; + ChartStrategyRegistry& operator=(const ChartStrategyRegistry&) = delete; + ChartStrategyRegistry(ChartStrategyRegistry&&) = default; + ChartStrategyRegistry& operator=(ChartStrategyRegistry&&) = default; + void add(std::unique_ptr s) { const std::string code = s->ddCode(); map_[code] = std::move(s);