首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能解析一上这个语法有关问题

2013-02-24 
谁能解析一下这个语法问题4. 智能指针不能作为容器类的元素。例如: templateclass T void container::ins

谁能解析一下这个语法问题
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

热点排行