我有A和B两班。

在A类中,我在B上有一个称为Bptr的指针。

我在A的构造函数中为Bptr分配内存,并在A的析构函数中释放Bptr的内存。

class B {
//whatever
public:
    B(int,int);
}

class A {
private:
    B * Bptr;
public:
    A();
}

A::A(){
    Bptr = new B(2,5);
}

A::~A(){
    delete Bptr;
}


如何将Boost集成到代码中并使用智能指针:boost :: shared_ptr?我的代码看起来如何?

非常感谢!

最佳答案

class B {
//whatever
public:
    B(int,int);
}

class A {
private:
    boost::shared_ptr<B> Bptr;
public:
    A();
}

A::A(){
    Bptr = boost::make_shared<B>(2,5);
}

A::~A(){
  // Bptr automatically deleted if this is the only boost::shared_ptr pointing to it
}


尽管您可以简单地使用new B(2,5)代替boost::make_shared<B>,但是后者是异常安全的。

关于c++ - 在这种情况下,如何使用boost的shared_ptr?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18878191/

10-11 19:30