#pragma once #include #include #include "Item.h" #include "Part.h" #include "Joint.h" #include "SystemSolver.h" namespace MbD { class SystemSolver; class System : public Item { //ToDo: Needed members admSystem namedItems mbdTime parts jointsMotions forcesTorques sensors variables hasChanged mbdSystemSolver public: static System& getInstance() { //https://medium.com/@caglayandokme/further-enhancing-the-singleton-pattern-in-c-8278b02b1ac7 static System singleInstance; // Block-scoped static Singleton instance return singleInstance; }; std::vector> parts; std::vector> jointsMotions; bool hasChanged = false; std::shared_ptr systemSolver; private: System() { parts = std::vector>(); jointsMotions = std::vector>(); systemSolver = std::make_shared(*this); } //System() = default; // Private constructor System(const System&) = delete; System& operator=(const System&) = delete; // Deleted copy assignment ~System() = default; // Private destructor }; }