#pragma once #include namespace renderive { template class Singleton_Widget { public: static T* instance() { if (!instance_value) { qInfo() << "error Singleton_Widget 未创建" << instance_value; } return instance_value; } Singleton_Widget() { if (instance_value) { qInfo() << "error Singleton_Widget 重复创建" << instance_value; } instance_value = static_cast(this); } virtual ~Singleton_Widget() = default; explicit Singleton_Widget(T&&) = delete; Singleton_Widget(const T&) = delete; void operator=(const T&) = delete; protected: static T* instance_value; }; template T* Singleton_Widget::instance_value = nullptr; } // namespace renderive