问题1>为什么下面的代码不能正常工作?错误C2440:初始化:不能从转换“的std ::矢量<_Ty>”到“常量的std ::矢量<_Ty>&`
问题2>什么是设计了正确的方法是什么?
#include <iostream>
#include <vector>
#include "boost/shared_ptr.hpp"
using namespace std;
class BaseClass
{};
class SubClass : public BaseClass
{};
int main()
{
std::vector<boost::shared_ptr<SubClass> > vecSubClassShared;
boost::shared_ptr<SubClass> sub1(new SubClass);
vecSubClassShared.push_back(sub1);
// Error 1 error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>' to 'const std::vector<_Ty> &`
const std::vector<boost::shared_ptr<BaseClass> >& vecBaseShared = vecSubClassShared;
}
我的直觉告诉我,(如果可能),它是一个丑陋的解决方案,鉴于刚刚铸造一个'升压:: shared_ptr的'到'升压:: shared_ptr的'要求['static_pointer_cast'](http://stackoverflow.com/questions/4764398/how-to-use-boostsmart-ptr-in-polymorphism) –
Cornstalks
2013-02-27 05:17:14
我使用一根'的boost :: shared_ptr的'这与初始化'的boost :: shared_ptr的',它按预期工作。只是好奇,为什么收集这样的东西不起作用。 –
q0987
2013-02-27 05:29:18