問題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