您好,如果我的structure
定义如下:
struct singleton
{
char sharedData[256];
};
我可以在C [not in C ++]中将单例模式强加于上述structure
的实例变量吗?
答案 0 :(得分:9)
如果您只是在头文件中转发声明struct
,则客户端将无法创建它的实例。然后,您可以为单个实例提供getter函数。
这样的事情:
.h
:
#ifndef FOO_H
#define FOO_H
struct singleton;
struct singleton* get_instance();
#endif
.c
:
struct singleton
{
char sharedData[256];
};
struct singleton* get_instance()
{
static struct singleton* instance = NULL;
if (instance == NULL)
{
//do initialization here
}
return instance;
}
答案 1 :(得分:2)
您可以声明:
char sharedData[256];
这是一个全局变量,不需要struct和singleton-antipattern。