ConstTransitivePtr.h 844 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. const T*operator=(T *t)
  47. {
  48. return ptr = t;
  49. }
  50. void dellNull()
  51. {
  52. delete ptr;
  53. ptr = NULL;
  54. }
  55. template <typename Handler> void serialize(Handler &h, const int version)
  56. {
  57. h & ptr;
  58. }
  59. friend class CGameHandler;
  60. };