c++ - 我的 shared_ptr 初始化列表代码有什么问题?

标签 c++ visual-studio-2010 boost shared-ptr

<分区>

我有一个包含另一个类的 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

最佳答案

其中一个是 shared_ptr<MyClass>一个是 shared_ptr<MyClass*>

大概是编译器错误消息告诉您的,而您误读了它。

关于c++ - 我的 shared_ptr 初始化列表代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919595/

相关文章:

c++ - 具有默认参数值的函数中的默认对象值

c - 如何设置我的代码/VS10 以识别 .c 文件中的 CUDA 函数调用?

c++ - MSVC 和 boost::lambda::bind 错误:T0:不允许标准参数

c++ - ZeroMQ 多部分消息第二部分 0 大小

c++ - std::unordered_map 抛出未处理的异常

c++ - 区别:std::runtime_error 与 std::exception()

c# - 安装服务时出现 System.BadImageFormatException

c# - 如何在 Mono 中运行 MVC3 或更新的应用程序

c++ - 以文件名为键 boost 属性树

c++ - boost协程如何在coro_t完成后检索函数返回值