所以我有一个用户类,它有两个子类:manager和regular_User,我希望manager是singleton。 任何人都可以帮我怎么做? 谢谢!
class user{
public:
//sth
protected:
//sth
};
class manager:public user{ //i want this to be singleton
//
};
class regular_user:public user{
};
答案 0 :(得分:1)
虽然我质疑为什么您希望manager
成为单身人士,但您可以使用匿名 class
来实现某些目标(或struct
)只有一个实例:
struct user {
static struct {
} manager;
};
有趣的是为匿名struct
分配存储空间,因为您不知道其类型!你需要这样做,否则你会得到链接时错误。但是C ++ 11有办法。包括
namespace {
decltype(user::manager) user::manager;
}
只有一个编译单元。
答案 1 :(得分:1)
首先,要使类Manager
成为类User
的子类,您需要使用class Manager : public User
之类的东西来声明它。然后,为了使类Manager
成为Singleton类,您需要保证只能创建该类的一个实例(一个对象)。如果你创建了它的所有类成员变量和成员函数static
,那么这些成员只会被创建一次。