使用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);
}
从网上找的资料看,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);
}
...全文
相关推荐
The C++ Standard Library(简体中文)
- **Class auto_ptr**:`std::auto_ptr`是一个智能指针类,用于管理动态分配的资源。
isoC++标准99的和2003的(超值)
**智能指针**:如auto_ptr(C++98),后来的unique_ptr、shared_ptr和weak_ptr(C++11),这些智能指针对象自动管理底层原始指针的生命周期,降低了内存管理的复杂性
C++11新特性文章汇总
#### (41) 智能指针 shared_ptr(3)这部分介绍了 `std::shared_ptr` 在复杂场景下的应用技巧,包括如何处理循环引用等问题。
c++的智能指针Auto_PTR的细致而经典的分析
#### 二、Auto_PTR 简介##### 2.1 动态内存管理问题在 C++ 中,动态内存的分配与释放往往成为开发者需要特别关注的问题。
VisualC++(VC++)编程序软件语言关键字大全集合.pdf
Visual C++(简称VC++)是Microsoft开发的一个集成开发环境,主要用于编写使用C++编程语言的程序。


