其他分享
首页 > 其他分享> > c – auto_ptr无法正常工作 – 编译错误

c – auto_ptr无法正常工作 – 编译错误

作者:互联网

大规模编辑:

在juanchopanza建议之后,我设法得到了这个最小的例子:

#include <memory>

struct a{
    int b;
};

int main()
{

    typedef std::auto_ptr<a> ArgAutoPtr;

    ArgAutoPtr floatingArg;

    floatingArg = ArgAutoPtr( new a );

}

这给了我错误:

no match for 'operator=' in 'm_floatingArg = std::auto_ptr<a>(((a*)operator new(4u)))'

QNX 6.4.1与GCC 4.3.3

编辑

我设法像这样编译它.这是否按预期工作或将生成…无论恶魔auto_ptr生成什么?

ArgAutoPtr floatingArg2 = ArgAutoPtr( new a );
floatingArg = floatingArg2;

解决方法:

表达式ArgAutoPtr(new a)正在创建临时auto_ptr.

auto_ptr :: operator =对其参数采用非const引用,与operator =的每个其他示例不同.非const引用不能绑定到临时引用.

标签:auto-ptr,c,qnx
来源: https://codeday.me/bug/20190728/1562399.html