我正在制作一个VC ++ 2008 windows项目,我想要一个我实例化的对象存在于全局的所有密集和目的。该对象应该是一个计时器,用于监视程序运行的时间,并且需要其他对象可以访问以生成日志文件。我知道我可以将native和sudo-native(string)成员标记为extern以使它们可以访问,但是如何让对象全局存在于其他对象。 我是否将对象定义放在需要知道其存在的对象的类之前(确保首先加载该类),或者我是否必须在main中放置一个允许访问该对象的方法?
答案 0 :(得分:2)
只需使用您需要的方法创建一个类,然后声明类global的实例 在您要使用它的所有模块中包含该类的标题 一个外部声明,告诉模块该定义在其他地方。可能是你 有一些共同的标题,包括所有。
extern MyClass yourInstance;
全局定义应该是main()
的位置MyClass yourInstance;
或者如果您更喜欢使用指针在堆上分配它,那么在main的开头分配 并在末尾删除,只需将指针指向全局。
这就是说,通常不会有全局声明,而应该声明 main()中的MyClass然后将指针传递给所有函数/类 你用。这就是我会怎么做。那你就不需要extern声明了 包括标题MyClass.h
全局实例的一个问题是,您几乎或根本无法控制它们 创建/破坏。
答案 1 :(得分:1)
您所描述的内容通常是使用单身人士完成的。
以下是如何编写一个示例:Singleton: How should it be used