我想在构造函数的初始化列表中使用一个 boost::shared_ptr<std::vector<std::string> > vec
的对象,并用一个 boost::shared_ptr<std::list<std::string> > list
对其进行初始化。
这种做法是否可行?
我尝试过这样写:
Test.hpp
class Test
{
public:
Test(boost::shared_ptr<std::list<std::string> > list);
private:
boost::shared_ptr<std::vector<std::string> > vec;
};
Test.cpp
Test::Test(boost::shared_ptr<std::list<std::string> > list) : vec(list->begin(), list->end())
{
}
错误信息的一部分:
Test.cpp: In constructor ‘Test::Test(boost::shared_ptr<std::list<std::basic_string<char> > >)’:
Test.cpp:6:85: error: no matching function for call to ‘boost::shared_ptr<std::vector<std::basic_string<char> > >::shared_ptr(std::list<std::basic_string<char> >::iterator, std::list<std::basic_string<char> >::iterator)’
boost::shared_ptr
已经过时。请使用C++11标准的功能,即std::shared_ptr
。 - rustyxboost::shared_ptr
,因为我无法访问 C++11 的特性... - tmsblgh