Argümanı silinen bir functor arıyorum:Herhangi bir standart silme functor var mı?
template<class T>
struct delete_functor
{
void operator()(T* p)
{
delete p;
}
};
std
, tr1
veya boost
'de böyle bir şey var mı?
Argümanı silinen bir functor arıyorum:Herhangi bir standart silme functor var mı?
template<class T>
struct delete_functor
{
void operator()(T* p)
{
delete p;
}
};
std
, tr1
veya boost
'de böyle bir şey var mı?
C++ 0x std::default_delete
'u std::unique_ptr
'u desteklemek için standart kitaplığa ekleyecektir.
delete_functor
ile aynı işlevselliğe sahiptir, ancak aynı zamanda dizi tipi nesneler için delete[]
'u aramak için uzmanlaşmıştır.
Teşekkürler, bir çekicilik gibi çalışır! – fredoverflow
Ne std :: default_delete
@ user1095108: “Operatör()' başlatılırsa, program hatalı biçimlendirilmiş olur. 'Default_delete' öğesinin başlatıldığı tür, sınıf şablonunun başlatıldığı sırada eksik olabilir, ancak 'operator() 'başlatıldığında tamamlanmalıdır. –
Boost.Lambda Benim şirkette boost kullanmak için izin verilmez ve biz ya C++ 11 kullanmıyorsanız delete_ptr and delete_array
Bunu işe alamıyorum. Hangi başlığı eklemek zorundayım? – fredoverflow
'#include
sahiptir, bu yüzden bu kullanın:
bence aradığın şey bu.
Ayrıca, dtor_fun_t olarak yeniden oluşturabilir ve "delete _ ptr;" " _ptr-> ~ _Type();" sadece dtoru çağırmak için. Örneğin bir bellek yöneticisi ve yerleştirme kullandığınız durum budur.
Bunu kendiniz yazıyorsanız, btw, ardından struct struct_functor {template void operatörü() (T * p) {delete p; }}; ', bir tane oluştururken T'yi belirtmeniz gerekmez. –
@Steve Cool. bilmek güzel! – fredoverflow