当前位置: 首页> 文旅> 艺术 > 单列模版 C++ Qt

单列模版 C++ Qt

时间:2025/8/4 11:50:26来源:https://blog.csdn.net/weixin_42252757/article/details/141226709 浏览次数:0次

单列模版

#ifndef _SINGTON_H_
#define  _SINGTON_H_
#include <QMutex>
#include <QSharedPointer>template<typename T>class Singleton {public:static T *instance() {if(m_instance.isNull()){QMutexLocker lock(&m_mutex);if(m_instance.isNull()){m_instance=QSharedPointer<T>(new T);}}return m_instance.data();}virtual ~Singleton()=0;protected:Singleton() {}private:static QMutex m_mutex;static QSharedPointer<T> m_instance;};template <typename T>Singleton<T>::~Singleton<T>(){}template<typename T>QMutex  Singleton<T>::m_mutex;template<typename T>QSharedPointer<T>  Singleton<T>::m_instance;#define  DECLARE_SINGTON_CONSTRUCT(CLASS_NAME)\protected: \CLASS_NAME(); \friend class Singleton<CLASS_NAME>;\public:\virtual ~CLASS_NAME();#define DECLARE_SINGTON_CONSTRUCT_WITH_BASE(CLASS_NAME,BASE_NAME)\protected:\CLASS_NAME(BASE_NAME*parent=nullptr);\friend class Singleton<CLASS_NAME>;\public:\virtual ~CLASS_NAME();#endif _SINGTON_H_

使用案列

#ifndef GENERATEDATANODE_H
#define GENERATEDATANODE_H#include "listnode.h"
#include "uicommondef.h"
#include "base/Singleton.hpp"
class GenerateDataNode : public Singleton<GenerateDataNode>
{DECLARE_SINGTON_CONSTRUCT(GenerateDataNode)
public:QList<DataNode> buildDataNode(const MENU_WIDGET_INDEX &index);protected:QList<DataNode> DiyMenuManagerIndex();QList<DataNode> DiySlideMenuIndex();QList<DataNode> MainMenuIndex();QList<DataNode> ShortCutMenuIndex();QList<DataNode> ColorPalettesIndex();QList<DataNode> ImageSettingIndex(); // 图像设置菜单//    QList<DataNode> CompensttionIndex();QList<DataNode> ReticleZeroIndex();QList<DataNode> PowerSettingIndex();QList<DataNode> RecordSettingIndex();QList<DataNode> GeneralSettingIndex();QList<DataNode> ReticleSettingIndex();QList<DataNode> DateTimeSettingIndex();
};#endif // GENERATEDATANODE_H
关键字:单列模版 C++ Qt

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: