gpt4 book ai didi

c++ - Clang 输出错误 "no matching construct for initialization"

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:58 26 4
gpt4 key购买 nike

使用 clang-425.0.27(基于 LLVM3.2svn)编译此代码片段:

class CStorage
{};

typedef boost::shared_ptr< CStorage > AccessorPtr;

class CTest
{
public:
CTest( const CStorage &rAccessor )
: m_Accessor( rAccessor ){}
private:
AccessorPtr m_Accessor;
};

获取编译错误:

**error**: no matching constructor for initialization of 'AccessorPtr' (aka 'shared_ptr<CStorage>')
: m_Accessor( rAccessor ){}

**note**: candidate constructor (the implicit copy constructor) not viable: no known conversion from
'const FNPNS::TSM::CDirectBlockAccessor' to 'const boost::shared_ptr<FNPNS::TSM::CDirectBlockAccessor>' for 1st argument
template<class T> class shared_ptr

最佳答案

boost::shared_ptr 构造函数需要一个指针,您要向它传递一个引用。您可能想更改自己的构造函数以也采用指针,或者使用引用在堆上创建一个新的 CStorage 对象。

关于c++ - Clang 输出错误 "no matching construct for initialization",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com