#pragma once #include namespace Tesses::Framework { class HiddenFieldData { public: virtual ~HiddenFieldData(); }; class HiddenField { private: HiddenFieldData* ptr; public: HiddenField(); HiddenField(HiddenFieldData* data); void SetField(HiddenFieldData* data); template T GetField() { return dynamic_cast(ptr); } template T* AllocField() { auto v = new T(); SetField(v); return v; } ~HiddenField(); }; }