全球自我创造的对象

时间:2012-02-06 06:46:13

标签: c++ windows global

我正在制作一个VC ++ 2008 windows项目,我想要一个我实例化的对象存在于全局的所有密集和目的。该对象应该是一个计时器,用于监视程序运行的时间,并且需要其他对象可以访问以生成日志文件。我知道我可以将native和sudo-native(string)成员标记为extern以使它们可以访问,但是如何让对象全局存在于其他对象。 我是否将对象定义放在需要知道其存在的对象的类之前(确保首先加载该类),或者我是否必须在main中放置一个允许访问该对象的方法?

2 个答案:

答案 0 :(得分:2)

只需使用您需要的方法创建一个类,然后声明类global的实例 在您要使用它的所有模块中包含该类的标题 一个外部声明,告诉模块该定义在其他地方。可能是你 有一些共同的标题,包括所有。

extern MyClass yourInstance;

全局定义应该是main()

的位置
MyClass yourInstance;

或者如果您更喜欢使用指针在堆上分配它,那么在main的开头分配 并在末尾删除,只需将指针指向全局。

这就是说,通常不会有全局声明,而应该声明 main()中的MyClass然后将指针传递给所有函数/类 你用。这就是我会怎么做。那你就不需要extern声明了 包括标题MyClass.h

全局实例的一个问题是,您几乎或根本无法控制它们 创建/破坏。

答案 1 :(得分:1)

您所描述的内容通常是使用单身人士完成的。

以下是如何编写一个示例:Singleton: How should it be used

这是另一个: Can any one provide me a sample of Singleton in c++?

另请注意:What is so bad about singletons?