使用STL中的auto_ptr时遇到一个explicit问题
以下代码通不过编译。
从网上找的资料看,deque的构造函数因为是explicit,所以像
deque<T> b;
deque<T> a = b;
这样的代码被禁止了。
好象当auto_ptr<T>声明了operator T()的类型转换操作后,并且auto_ptr<T>有接收一个T为参数的构造函数时,这句代码才能成功:deque<T> a = b;
不过我试了好象不行。
有没有谁知道怎么改可以这样使用:
deque< auto_ptr<X> > dq;
dq.assign(10, x);
(其实在代码里面我使用的智能指针是这个http://blog.csdn.net/sproll/archive/2007/02/17/1511314.aspx)
class X
{
X(X& x){};
};
void CDlgTestVC7Dlg::OnBnClickedOk()
{
auto_ptr<X> x;
auto_ptr<X> y = x;
deque< auto_ptr<X> > dq;
dq.assign(10, x);
}