harden(controller): ChartStrategyRegistry 显式禁拷贝/保留移动(保护 find() 裸指针,评审 I-1)
This commit is contained in:
parent
0cb0ed8aa0
commit
4ca5893800
|
|
@ -15,6 +15,15 @@ struct IDatasetChartStrategy {
|
||||||
|
|
||||||
class ChartStrategyRegistry {
|
class ChartStrategyRegistry {
|
||||||
public:
|
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) {
|
void add(std::unique_ptr<IDatasetChartStrategy> s) {
|
||||||
const std::string code = s->ddCode();
|
const std::string code = s->ddCode();
|
||||||
map_[code] = std::move(s);
|
map_[code] = std::move(s);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue