小编lix*_*omo的帖子

为什么shared_ptr可以通过加入"受保护的访问权限"来访问

我用shared_ptr做了一些测试,我想不出下面的事情.我刚开始学习boost库.有人可以告诉我原因吗?

#include <boost\shared_ptr.hpp>
#include <iostream>

class A 
{
public:  
    virtual void sing()
    {
        std::cout<<"A";
    }
protected:  virtual ~A() {};

};

class B : public A 
{
public:  
    virtual void sing() 
    {   
        std::cout << "B"; 
    }
    virtual ~B() {};
};


int foo()
{   
    boost::shared_ptr<A> pa(new B());
    pa->sing();

    delete static_cast<B*>(pa.get());

    delete pa.get(); //this line has a problem error C2248: “A::~A”: can't access protected memmber(declared in class“A")   
    return 0;
}

int main()
{
    foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当该行被注释掉时它可以被编译.当然,这并不意味着shared_ptr将删除内部维护的主函数指针,就像我所做的那样.返回pa.get()的指针与内部维护的指针之间是否有任何区别?

c++ shared-ptr

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

未捕获的SyntaxError:意外的令牌:

为什么 <script> {'foo':'bar'}</script> 导致Uncaught SyntaxError:意外的令牌:在chrome

<script> {foo:'bar'}</script>就好了.

javascript

0
推荐指数
1
解决办法
936
查看次数

标签 统计

c++ ×1

javascript ×1

shared-ptr ×1