#pragma once #include struct IkarusObject { public: IkarusObject(struct IkarusProject * project, IkarusId id); IkarusObject(IkarusObject const&) = default; IkarusObject(IkarusObject&&) = default; IkarusObject& operator=(IkarusObject const&) = default; IkarusObject& operator=(IkarusObject&&) = default; virtual ~IkarusObject() = default; public: [[nodiscard]] struct IkarusProject * get_project(); [[nodiscard]] struct IkarusProject * get_project() const; [[nodiscard]] IkarusId get_id() const; private: struct IkarusProject mutable * _project; IkarusId _id; };