我正在尝试使用共享指针调用遗留函数,该函数采用普通指针参数,我收到以下错误:
我试图通过一个简单的例子传达这个想法,我正在做什么。我无法将参数更改为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(
答案 0 :(得分:3)
该函数是否尝试释放指针?如果没有,最好的办法是使用shared_ptr的get()方法,如下所示:
display(ptr.get());
答案 1 :(得分:0)
要从boost::shared_ptr
获取原始指针,请使用get()
方法。