no match for ‘operator=’ (operand types are ‘std::shared_ptr<LabelMatch>’ and ‘LabelMatch*’)
时间: 2024-03-01 20:50:03 浏览: 214
C++智能指针-unique-ptr智能指针详解.pdf
这个错误提示表示在使用 `=` 运算符给一个 `std::shared_ptr` 对象赋值时,右侧的操作数类型是一个裸指针(`LabelMatch*`),而不是 `std::shared_ptr` 类型。这是因为 `std::shared_ptr` 与裸指针之间不能直接进行赋值操作。
要解决这个问题,可以使用 `std::make_shared` 函数来创建一个新的 `std::shared_ptr` 对象,并将裸指针作为参数传递给它。例如:
```
std::shared_ptr<LabelMatch> ptr = std::make_shared<LabelMatch>(*labelMatch);
```
这里的 `*labelMatch` 表示解引用 `LabelMatch*` 指针,将其指向的对象作为参数传递给 `std::make_shared` 函数。这样可以创建一个新的 `std::shared_ptr` 对象,并将其赋值给左侧的 `std::shared_ptr` 对象。
阅读全文