SORU
3 NİSAN 2009, Cuma


enable_shared_from_this faydası nedir

Destek okurken enable_shared_from_this karşılaştım.* Örnekler ve ben belgeleri okuduktan sonra hala bu doğru kullanılması gerektiği konusunda kaybetti. Biri bana bu sınıfı kullanarak mantıklı zaman örnek ve/veya ve bir açıklama verebilir.

CEVAP
3 NİSAN 2009, Cuma


Sahip olduğun tüm this this shared_ptr geçerli bir örnek almak sağlar. O olmadan, sen zaten bir üye gibi biri olmadığı sürece this shared_ptr bir almanın hiçbir yolu yoktur. boost documentation for enable_shared_from_this Bu örnek:

class Y: public enable_shared_from_this<Y>
{
public:

    shared_ptr<Y> f()
    {
        return shared_from_this();
    }
}

int main()
{
    shared_ptr<Y> p(new Y);
    shared_ptr<Y> q = p->f();
    assert(p == q);
    assert(!(p < q || q < p)); // p and q must share ownership
}

Bu yöntem, f() işlevi, geçerli bir üyesi bir örneği olmasına rağmen shared_ptr,. Sadece bunu yapamazsınız unutmayın:

class Y: public enable_shared_from_this<Y>
{
public:

    shared_ptr<Y> f()
    {
        return shared_ptr<Y>(this);
    }
}

Bu iade paylaşılan işaretçi", ve bunlardan biri kaybetme sona erecek ve nesne silindiğinde sarkan bir referans taşıyor." uygun farklı bir başvuru sayısı olacak

enable_shared_from_this aynı zamanda dayanıklılık ve oradan yeni C 0x standart bir parçası olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008
  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007