Zauważyłem, że wiele klas Poco ma chroniony destruktor. To sprawia, że irytowanie kodu jest bardziej irytujące. Na przykład tutaj jest część mojego kodu:Uzasadnienie dla chronionego destruktora
struct W2: Poco::Util::WinRegistryConfiguration
{
typedef Poco::Util::WinRegistryConfiguration inherited;
using inherited::inherited;
};
std::string get_documents_folder()
{
W2 regc { "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" };
return regc.getString("Personal", "");
}
Oczywiście, byłoby znacznie prostsze, czy mogę pozbyć się W2
i po prostu zrobić regc
mieć typ WinRegistryConfiguration
. Ale nie jest to możliwe z powodu chronionego destruktora.
Rozumiem, że można zamiast tego używać Poco::AutoPtr
, ale zasoby są marnowane, wykonując alokację dynamiczną z new
, gdy automatyczne przydzielanie powinno działać poprawnie.
Moje pytanie brzmi: jakie jest tego uzasadnienie i czy nie mam nic do powiedzenia?