读书人

C++沉思录里刻画的handle类不能放在

发布时间: 2012-09-03 09:48:39 作者: rapoo

C++沉思录里描写的handle类,不能放在vector里?
代码例子

正常的使用这个handle类是可以的,但是,把handle放到vector里,运行vector的resize函数,就报错,是想用UseCount的operator=,但是私有,确实UseCount类设计的时候就不希望被赋值,所以故意私有

[解决办法]
放标准容器的类型必须满足一下条件(至少):
1.有默认构造函数
2.有拷贝构造函数
3.有=运算符
[解决办法]
template<class _InIt,
class _OutIt> inline
_OutIt _Move(_InIt _First, _InIt _Last,
_OutIt _Dest, _Nonscalar_ptr_iterator_tag)
{// move [_First, _Last) to [_Dest, ...), arbitrary iterators
for (; _First != _Last; ++_Dest, ++_First)
*_Dest = _STD move(*_First);
return (_Dest);
}
vector.resize的时候调用了这个,这个需要用operator,在handle类里写上operator=,就能用了。

读书人网 >C++

热点推荐