#pragma once #include "structs.hpp" namespace game { extern uint64_t base_address; void load_base_address(); template class symbol { public: symbol(const size_t address) : address_(reinterpret_cast(address)) { } T* get() const { return reinterpret_cast((uint64_t)address_ + base_address); } operator T* () const { return this->get(); } T* operator->() const { return this->get(); } private: T* address_; }; } #include "symbols.hpp"