繁体   English   中英

容器,智能指针和模板继承类

[英]Containers, Smart Pointers and Templated Inherited Classes

我可以编译一些代码,该代码用指向模板化继承类的指针填充指向基类的原始指针的向量。 但是我尝试使用标准库并增强智能指针而不是原始指针,并且代码无法编译。 你能解释为什么不吗?

这有效:

vector<base*> vec
inherited<double>* elem = new inherited<double> >();
vec.push_back(elem);

这不是:

vector<auto_ptr<base> > vec
auto_ptr<inherited<double> >(new inherited<double> >());
vec.push_back(elem);

我并不在乎我想做的事是否合理,只是觉得有什么可能。

我完整的60个LOC在这里: https : //gist.github.com/melvyniandrag/f432140c1aa216696bb6

别打扰我,我已经阅读了一些C ++模板:完整指南(2002)和此处的一些帖子,但未能方便地连接各个点。

您可以使用std::shared_ptrstd::static_pointer_cast

vector<shared_ptr<base> > vec;
shared_ptr<inherited<double> > elem(new inherited<double> >());
vec.push_back(static_pointer_cast<inherited<double>,base>(elem));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM