谁能解析一下这个语法问题
4. 智能指针不能作为容器类的元素。例如:
template<class T>
void container::insert(const T &value)
{
..........
X = value;
..........
}
事实上在stl中,所有的container要内部拷贝所传参数的值时都是传的const类型的值。因此无法用auto_ptr传进去。
最后一句谁能再详细解释一下,谢谢了!智能指针不能定义为常量类型,是吗?
[解决办法]
原因不是你说的。
是所有权转移的问题,会把数据丢掉。
[解决办法]
我错了
看了下auto_ptr的源码,auto_ptr没有提供auto_ptr(const auto_ptr&)形式的拷贝构造,只有auto_ptr(auto_ptr&)形式的
所以X = value;的时候因为右操作数是const,无法通过编译,如顶楼描述的那样
[解决办法]
一般用 boost::shared_ptr或boost::scoped_ptr很少用auto_ptr