C ++:声明一个全局类并从其他类访问它?

时间:2010-05-09 18:09:24

标签: c++

我有一个类应该从main()全局声明,并从程序中的其他声明的类访问,我该怎么做?

class A{ 
    int i; 
    int value(){ return i;}
};

class B{ 
   global A a; //or extern?? 
   int calc(){
       return a.value()+10;
   }
}

main(){
   global A a;
   B b;
   cout<<b.calc();
}

2 个答案:

答案 0 :(得分:8)

你可能真的不想这样做,但如果你必须 - 在包含main的文件中:

#include "A.h"
A a;

int main() {
 ...
}

然后在需要访问全局的文件中:

#include "A.h" 
extern A a;

您需要在A.h头文件中放置A的声明才能使其正常工作。

答案 1 :(得分:1)

在C ++中声明一个类的全局实例是一个禁忌。

您应该使用单例模式,它为您提供可从整个应用程序访问的单个对象实例。

你可以找到很多关于C ++单例实现的文献,但wikipedia是一个很好的起点。

已经在stackoverflow上讨论了

Thread safe singleton pattern implementation