使用共享指针调用遗留函数

时间:2011-03-18 06:52:45

标签: c++

我正在尝试使用共享指针调用遗留函数,该函数采用普通指针参数,我收到以下错误:

我试图通过一个简单的例子传达这个想法,我正在做什么。我无法将参数更改为display(),因为它在遗留下并且正在被许多其他模块使用。但是从我的函数中,我使用共享指针来调用显示。这是对的吗 ?你能建议/建议吗?

#include <iostream>
using namespace std;

#include <boost/shared_ptr.hpp>

void display(int * x)
{
    cout << endl << "Pointer value is = %x" << *x;
}
int main(){

    boost::shared_ptr<int> ptr( new( int ) );

    *ptr =5;

    display(ptr);
    return 0;
}

sh.cpp:在函数'int main()'中: sh.cpp:17:错误:无法将'boost :: shared_ptr'转换为'int *'以将参数'1'转换为'void display(

2 个答案:

答案 0 :(得分:3)

该函数是否尝试释放指针?如果没有,最好的办法是使用shared_ptr的get()方法,如下所示:

display(ptr.get());

答案 1 :(得分:0)

要从boost::shared_ptr获取原始指针,请使用get()方法。