当 std::shared_ptr 时,“operator=”不匹配

no match for ‘operator=’ when std::shared_ptr

我看到一个代码正是使用这个,但那个代码有效而我的却不行,知道为什么吗?

PD:我正在尝试实现这个 commit。看到代码完全一样

for(const auto& tx : block.vtx)
    if (txHash == tx->GetHash()) {
        txNew = tx;
        foundAtOut = *pindex;
        return true;
    }
main.cpp:2471:25: error: no match for ‘operator=’ (operand types are ‘CTransactionRef’ {aka ‘std::shared_ptr<const CTransaction>’} and ‘const CTransaction’)
             txNew = tx;

仔细阅读错误消息:您正在尝试将类型 const CTransaction 的对象分配给类型 std::shared_ptr<const CTransaction> 的共享指针。但是您不能使用 operator= 来做到这一点,因为它的参数应该是 shared_ptrunique_ptr,如 cppreference.

中所述

根据你的实际代码,我认为,你可以为 const CTransaction 对象创建一个新的 shared_ptr 然后赋值给它。