我试图弄清楚是否可以创建一个指向不同类型的共享指针数组。 例如,类似这样的:
vector<shared_ptr<**???**>> v;
v.push_back(shared_ptr<int>(new int));
v.push_back(shared_ptr<MyClass>(new MyClass()));
或任何其他方式在不知道其类型的情况下传递 shared_ptr
。
最佳答案
更多类型安全可能是:
/// header #include <boost/variant.hpp>
typedef boost::variant < boost::shared_ptr < T1 >, boost::shared_ptr < T2 >, ... > VariantT;
std::vector < VariantT > container;
container.push_back ( boost::shared_ptr < T1 > ( new T1 ) ); // or boost::make_shared
container.push_back ( boost::shared_ptr < T2 > ( new T2 ) ); // or boost::make_shared
更多请看Boost.Variant library .
关于c++ - 指向不同类的共享指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26843024/