harden(controller): ChartStrategyRegistry 显式禁拷贝/保留移动(保护 find() 裸指针,评审 I-1)

This commit is contained in:
gaozheng 2026-06-12 08:20:20 +08:00
parent 0cb0ed8aa0
commit 4ca5893800
1 changed files with 9 additions and 0 deletions

View File

@ -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<IDatasetChartStrategy> s) {
const std::string code = s->ddCode();
map_[code] = std::move(s);