ConstTransitivePtr.h 785 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. class CGameHandler;
  3. template <typename T>
  4. class ConstTransitivePtr
  5. {
  6. T *ptr;
  7. ConstTransitivePtr(const T *Ptr)
  8. : ptr(const_cast<T*>(Ptr))
  9. {}
  10. public:
  11. ConstTransitivePtr(T *Ptr = NULL)
  12. : ptr(Ptr)
  13. {}
  14. const T& operator*() const
  15. {
  16. return *ptr;
  17. }
  18. T& operator*()
  19. {
  20. return *ptr;
  21. }
  22. operator const T*() const
  23. {
  24. return ptr;
  25. }
  26. T* get()
  27. {
  28. return ptr;
  29. }
  30. const T* get() const
  31. {
  32. return ptr;
  33. }
  34. operator T*()
  35. {
  36. return ptr;
  37. }
  38. T *operator->()
  39. {
  40. return ptr;
  41. }
  42. const T *operator->() const
  43. {
  44. return ptr;
  45. }
  46. void dellNull()
  47. {
  48. delete ptr;
  49. ptr = NULL;
  50. }
  51. template <typename Handler> void serialize(Handler &h, const int version)
  52. {
  53. h & ptr;
  54. }
  55. friend CGameHandler;
  56. };