Вопрос про std::shared_ptr
От: wayfaring  
Дата: 09.09.13 13:53
Оценка:
Здравствуйте. Подскажите почему не работает следующий код:

#include <memory>
#include <iostream>

class B;

class A {
public:
    A()
    {
        std::cout << "A::A()" << std::endl;
    }

    ~A()
    {
        std::cout << "A::~A()" << std::endl;
    }

    std::shared_ptr< B > m_b;
};

class B {
public:
    B()
    {
        std::cout << "B::B()" << std::endl;
    }

    ~B()
    {
        std::cout << "B::~B()" << std::endl;
    }

    std::shared_ptr< A > m_a;
};

void main()
{
    std::shared_ptr< A > a( new A );
    std::shared_ptr< B > b( new B );

    a->m_b = b;
    b->m_a = a;

    std::cout << "A use count: " << a.use_count() << std::endl;
    std::cout << "B use count: " << b.use_count() << std::endl;

    a = nullptr;
    b = nullptr;

    std::cout << "A use count: " << a.use_count() << std::endl;
    std::cout << "B use count: " << b.use_count() << std::endl;
}


Вывод следующий:

A::A()
B::B()
A use count: 2
B use count: 2
A use count: 1
B use count: 1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.