RCPointer.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "Betriebssystem.h"
  2. namespace Framework
  3. {
  4. template<typename T>
  5. class RCPointer
  6. {
  7. private:
  8. T *pointer;
  9. public:
  10. RCPointer()
  11. {
  12. pointer = 0;
  13. }
  14. RCPointer( T *pointer )
  15. {
  16. this->pointer = pointer;
  17. }
  18. RCPointer( RCPointer &ptr )
  19. {
  20. this->pointer = ptr.pointer ? dynamic_cast<T *>( ptr.pointer->getThis() ) : 0;
  21. }
  22. ~RCPointer()
  23. {
  24. if( pointer )
  25. pointer->release();
  26. }
  27. RCPointer &operator=( RCPointer &ptr )
  28. {
  29. if( this->pointer )
  30. this->pointer->release();
  31. this->pointer = ptr.pointer ? dynamic_cast<T *>( ptr.pointer->getThis() ) : 0;
  32. }
  33. RCPointer &operator=( T *ptr )
  34. {
  35. if( this->pointer )
  36. this->pointer->release();
  37. this->pointer = ptr;
  38. }
  39. T *operator->()
  40. {
  41. return pointer;
  42. }
  43. operator T *( )
  44. {
  45. return pointer;
  46. }
  47. };
  48. }