SORU
21 EYLÜL 2008, Pazar


Neden std kullanmak yanlış mı::auto_ptr<> standart konteynerle?

Neden Standart konteyner ile std::auto_ptr<> kullanmak yanlış mı?

CEVAP
21 EYLÜL 2008, Pazar


C Standart STL bir unsuru "-constructible kopyala" ve "atanabilir." olması gerektiğini söyledi Diğer bir deyişle, bir öğe atanmış ya da kopyalanması gerekir ve bu iki element mantıksal olarak bağımsızdır. std::auto_ptr bu şartı yerine getirmek değildir.

Örneğin bu kod:

class X
{
};

std::vector<std::auto_ptr<X> > vecX;
vecX.push_back(new X);

std::auto_ptr<X> pX = vecX[0];  // vecX[0] is assigned NULL.

Bu sınırlama üstesinden gelmek için, eğer C 11 yok ise. std::unique_ptr, std::shared_ptr std::weak_ptr akıllı işaretçileri veya artırmak eşdeğerleri kullanmalısınız. Here is the boost library documentation for these smart pointers.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013