【发布时间】:2014-05-28 18:50:33
【问题描述】:
我有一个包含指向另一个类的 shared_ptr 的类。我在类的构造函数中设置 shared_ptr 。当我编译这个时,我得到一个看起来很奇怪的错误。这是完整的代码:
#include <iostream>
#include <boost/shared_ptr.hpp>
using namespace std;
class MyClass
{
public:
int _i;
MyClass(int arg) : _i(arg) { }
};
class MyClassPtr
{
public:
boost::shared_ptr<MyClass*> _shptr;
//constructor using initialization list
MyClassPtr(boost::shared_ptr<MyClass*> arg) : _shptr(arg) { }
};
int main()
{
boost::shared_ptr<MyClass> sp(new MyClass(123));
//error C2664: 'MyClassPtr::MyClassPtr(boost::shared_ptr<T>)' :
// cannot convert parameter 1
// from 'boost::shared_ptr<T>' to 'boost::shared_ptr<T>'
MyClassPtr mc(sp);
return 0;
}
我不理解错误消息中“from 'boost::shared_ptr<T>' to 'boost::shared_ptr<T>'”的部分。如何在 MyClassPtr 构造函数中设置 _shptr 变量?
我正在使用 Boost 1.54
【问题讨论】:
-
类的构造函数中的参数
arg应该是boost::shared_ptr<MyClass>类型,对吧?它是一个指针的事实是隐含的。
标签: c++ visual-studio-2010 boost shared-ptr