Eğer opak bir işaretçi tipedefiniz varsa, şablonlarda kullanmak için sivri uçlu türe dinamik olarak başvurmanın bir yolu var mıdır? Akıllı işaretçi tipleri şablonları işaretçi-bu bir std::shared_ptr
tanımlamak için, yazın, size söylemek zorunda gibi görünüyor açısından ÇünküNasıl opak bir işaretçi typedef bir shared_ptr yapabilirim? (veya: typedef'i nasıl açabilirim?)
struct Foo; // Forward declared struct
typedef Foo* FooPtr; // Opaque pointer
: Örneğin, böyle bir şey var ki
std::shared_ptr<struct Foo> theSharedPtr;
Böyle bir işaretçiyi "el ile" opak işaretçisi typedef unwrapping olmadan tanımlamak için herhangi bir yolu var mı? Burada belirgin bir şey eksik olmalı gibi hissediyorum, ancak bu gibi bir şey hayal olabilir (not: bunlar çalışmaz): Bu mümkün olması gerektiği gibi
std::shared_ptr<*FooPtr> theSharedPointer;
// or
std::shared_ptr<pointedto(FooPtr)> theSharedPointer;
hissediyorum. Bir şey mi eksik? Bunun gibi hissettiren bir alnı-şapırdayan an ...
DÜZENLEME: Bazılarında etrafta dolaşmak, ortak durumda, shared_ptr<T>
'un sizeof(T)
'u almak istediği anlaşılıyor. Kurucuya bir delici sağlayarak bunu aşabilirsiniz. Bu durumun biraz da olsa bir durum oluşturduğundan şüpheleniyorum, ama yine de C++ 'da tüm türlerin boğulması gibi görünüyor, bir işaretçi türünü el ile yapmadan "açıp kapamayı" beceremem gerekiyor.
İyi düşünmüyorsanız, std :: shared_ptr 'in C++ 11' de olduğunuzu açıkça göreceksiniz ... Cevabımın geri kalanını yine de burada bırakacağım. – sbabbi
Cevabın bütünlüğünü beğeniyorum. –