相关疑难解决方法(0)

make shared_ptr不使用delete

在我的代码中,我希望boost :: shared_ptr不要调用delete但是调用ptr-> deleteMe()代替.

我还有一些C风格的函数返回一个ptr.我可以调用lib_freeXYZ(ptr); 而不是试图删除?

c++ boost

41
推荐指数
3
解决办法
2万
查看次数

从Derived*转换为Base*&

我试图通过将引用传递给指针而不是指向指针的指针来回答这里提到的问题,如下所示:

class Parent 
{
};

class Child : public Parent 
{
};

void RemoveObj(Parent*& pObj)
{
    delete pObj;
    pObj = NULL;
}

int main()
{
    Parent* pPObj = new Parent;
    Child*  pCObj = new Child;
    pPObj = new Parent();
    pCObj = new Child();



    RemoveObj(pPObj);
    RemoveObj(pCObj); // This is line 32
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

但是这会在第32行产生以下编译器错误:

错误C2664:'RemoveObj':无法将参数1从'Child*'转换为'Parent*&'

我同意不允许从Child**转换为Parent**.但为什么这种转换也不允许?

c++ polymorphism compilation

6
推荐指数
1
解决办法
2409
查看次数

标签 统计

c++ ×2

boost ×1

compilation ×1

polymorphism ×1