Man kunne måske indkapsle tilgangen til objektet i smart-pointer-klassen, så andre ikke kan få adgang til objektet direkte, hverken som pointer eller reference.
Kender du til Singleton design? Hvis du sørger for at klassen kun kan instantieres gennem en enkelt funktion, så kan funktionen returnere en smart pointer.
class MyClass { friend class smart_ptr<MyClass>; // In order to access destructor public: static smart_ptr<MyClass> instantiate(/* ... */);
Det forhindrer dog ikke brugeren i at få en reference eller pointer til MyClass gennem smart_ptr<> klassen (som vist er hvad du ønsker).
Hvis brugeren ALDRIG må få en reference eller pointer til din klasse, så er en smart ptr ikke hvad du har brug for. Så har du brug for en Proxy - en klasse som træder i stedet for e.g. MyClass. Hoved formålet med smart ptr's er som regel at sikre sig at instansen bliver deallokeret præcis én gang.
formålet med den smartptr klasse som vi bruger er at du ikke kommer til at kalde funktioner på en pointer til et objekt som er nedlagt. En smartptr er jo i forvejen en proxy klasse.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.