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