C++ C+中的唯一处理程序+;
我想创建一个类,它将提供静态方法来创建唯一的处理程序(可能是int,可能是float,可能是某种东西,但总是作为指向对象的指针进行检索),但我仍然有点困惑,当我开始阅读单例和工厂模式时,我一点也不明白 假设我有一节课C++ C+中的唯一处理程序+;,c++,C++,我想创建一个类,它将提供静态方法来创建唯一的处理程序(可能是int,可能是float,可能是某种东西,但总是作为指向对象的指针进行检索),但我仍然有点困惑,当我开始阅读单例和工厂模式时,我一点也不明白 假设我有一节课 CHandle{ private: CHandle(const CHandle &hnd); CHandle &operator=(const CHandle &hnd); static int id; pub
CHandle{
private:
CHandle(const CHandle &hnd);
CHandle &operator=(const CHandle &hnd);
static int id;
public:
static CHandle *createHandle(){
id++;
return this;
}
}
我主要会使用:
CHandle *c = CHandle::createHandle();
我可以这样做吗?或者我把一切都搞砸了?有两件事:
CHandle{
private:
CHandle(int id): m_id(id) {};
CHandle(const CHandle &hnd);
CHandle &operator=(const CHandle &hnd);
int m_id;
static int s_id;
public:
static CHandle *createHandle(){
s_id++;
return new CHandle(s_id);
}
}
- 首先,
方法不知道静态
。所以在这个
静态方法中没有
这个
- 之后,您可以执行以下操作:
CHandle{ public: static CHandle *createHandle(){ s_id++; return new CHandle(s_id); } private: CHandle(int id) : m_id(id) {}; CHandle(const CHandle &hnd); CHandle &operator=(const CHandle &hnd); int m_id; // Id of the instance static int s_id; };
int CHandle::s_id = 0;
CHandle* CHandle::s_Instance = NULL; // if singleton
有两件事:
- 首先,
方法不知道静态
。所以在这个
静态方法中没有
这个
- 之后,您可以执行以下操作:
CHandle{ public: static CHandle *createHandle(){ s_id++; return new CHandle(s_id); } private: CHandle(int id) : m_id(id) {}; CHandle(const CHandle &hnd); CHandle &operator=(const CHandle &hnd); int m_id; // Id of the instance static int s_id; };
int CHandle::s_id = 0;
CHandle* CHandle::s_Instance = NULL; // if singleton
请始终记住,
此
与对象相关,但静态
用于整个类,
因此,静态
方法无法访问此
这是你需要的帮助
CHandle{
private:
CHandle(const CHandle &hnd);
CHandle(int iidd);
CHandle &operator=(const CHandle &hnd);
static int id;
static CHandle *obj;//Singleton object
public:
static CHandle *createHandle(){
id++;
return obj;
}
}
在Project.cpp中
int CHandle::id=0;
CHandle *CHandle::obj=new CHandle(xxx);
请始终记住,
此
与对象相关,但静态
用于整个类,
因此,静态
方法无法访问此
这是你需要的帮助
CHandle{
private:
CHandle(const CHandle &hnd);
CHandle(int iidd);
CHandle &operator=(const CHandle &hnd);
static int id;
static CHandle *obj;//Singleton object
public:
static CHandle *createHandle(){
id++;
return obj;
}
}
在Project.cpp中
int CHandle::id=0;
CHandle *CHandle::obj=new CHandle(xxx);
静态方法不知道
这个你也可以使用搜索选项:noooooooooooooooooooooooo!不要用单身汉,他们是邪恶的!有更好的方法可以做到这一点。构造函数和模板。为什么要这样做,或者更确切地说,您想解决什么问题?我想有一种机制,它可以包装不同的数据类型(如int、struct或其他),并将返回指向新的唯一对象的指针-就像每次调用方法createHanlde()时,都将返回指向具有唯一id的对象的新的唯一指针。这就是为什么我想到了单例方法和工厂方法,但后来有人告诉我,我可以使用带计数器的静态方法。但是现在我在想谁会破坏这些对象呢?静态方法不知道这个
,你也可以使用搜索选项:noooooooo!不要用单身汉,他们是邪恶的!有更好的方法可以做到这一点。构造函数和模板。为什么要这样做,或者更确切地说,您想解决什么问题?我想有一种机制,它可以包装不同的数据类型(如int、struct或其他),并将返回指向新的唯一对象的指针-就像每次调用方法createHanlde()时,都将返回指向具有唯一id的对象的新的唯一指针。这就是为什么我想到了单例方法和工厂方法,但后来有人告诉我,我可以使用带计数器的静态方法。但现在我在想谁会毁掉这些东西?