Sleeping Wombat Common Library  0.50.0
swCommonLibrary
Private Member Functions | Friends | List of all members
ObjectDeleterKey< class_type > Class Template Reference

You can specify classes that can delete objects with private constructors. More...

#include <ObjectDeleter.h>

Private Member Functions

 ObjectDeleterKey ()=default
 Tylko klasa zaprzyjaźniona może stworzyć obiekt.
 
 ObjectDeleterKey (const ObjectDeleterKey &)
 Tylko klasa zaprzyjaźniona może stworzyć obiekt.
 
 ObjectDeleterKey (const ObjectDeleterKey &&)
 Tylko klasa zaprzyjaźniona może stworzyć obiekt.
 

Friends

class ResourceManager
 
class sw::AssetsManager
 
class ResourceContainer< class_type >
 
class ResourceContainer< ResourceObject >
 
class RenderTargetObject
 

Detailed Description

template<typename class_type>
class ObjectDeleterKey< class_type >

You can specify classes that can delete objects with private constructors.

Niektóre obiekty są zadeklarowane z prywatnym (chronionym) destruktorem, w celu uniemożliwienia skasowania ich przez niepowołane klasy. Jednakże musi istnieć jakiś dostęp do destruktorów, aby nie powodować wycieków pamięci. Do kasowania obiektów służy klasa ObjectDeleter. Aby stworzyć obiekt tej klasy potrzebny jest "klucz", którym jest własnie ta klasa.

Klucz ma prywatne konstruktory, w związku z czym może zostać stworzony jedynie przez klasy, które są z nim zaprzyjaźnione. Domyślnie klasami zaprzyjaźnionymi są ResourceManager i ResourceContainer, aby stworzyć klucz dla innych typów klas, należy napisać specjalizację tego szablonu.

Odddelegowanie innej klasy do kasowania obiektów ma za zadanie zlikwidowanie niewygodnych zależności. Dzięki temu obiekty, które mają być kasowane, nie muszą się przyjaźnić bezpośrednio z klasami, które mogą je usuwać. Wystarczy, że zadeklarują przyjaźń z obiektem ObjectDeleter. Taka przyjaźń jest niegroźna, ponieważ klasa ta nie służy do niczego innego niż kasowanie obiektów, więc jesteśmy pewni, że zmiany wprowadzone w klasie deklarującej przyjaźń nie będą psuły całego kodu aplikacji.


The documentation for this class was generated from the following file: