RCPointer.h 1019 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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( T *pointer )
  11. {
  12. this->pointer = pointer;
  13. }
  14. RCPointer( RCPointer &ptr )
  15. {
  16. this->pointer = ptr.pointer ? dynamic_cast<T *>( ptr.pointer->getThis() ) : 0;
  17. }
  18. ~RCPointer()
  19. {
  20. this->pointer->release();
  21. }
  22. RCPointer &operator=( RCPointer &ptr )
  23. {
  24. if( this->pointer )
  25. this->pointer->release();
  26. this->pointer = ptr.pointer ? dynamic_cast<T *>( ptr.pointer->getThis() ) : 0;
  27. }
  28. RCPointer &operator=( T *ptr )
  29. {
  30. if( this->pointer )
  31. this->pointer->release();
  32. this->pointer = ptr;
  33. }
  34. T *operator->()
  35. {
  36. return pointer;
  37. }
  38. operator T *( )
  39. {
  40. return pointer;
  41. }
  42. };
  43. }