ATL 筆記 - offsetofclass(base, derived)

// snippet from ATL SDK
#define offsetofclass(base, derived) \
   ((DWORD)(static_cast<base*>((derived*)_ATL_PACKING))-_ATL_PACKING)
  • 選定一個位置,用 derived class 接它。再安全上轉,上轉時 ptr 會自動往後退了幾步。
  • 再把原來的位置減掉現在站的位置,就等於剛剛退了多少步。也就是 derived 與 base 的 offset。
  • _ATL_PACKING 是一個非 0 的數值: 8

  • Live: http://cpp.sh/8y6r

comments powered by Disqus