在另一个文件中使用另一个全局变量的类的全局实例

时间:2014-02-21 21:13:02

标签: c++ class global-variables

我有这些文件(简化版)

A.H

class A
{

public:
     A(int){}

int operator [](int a){return a;}
};

A a(2);

的main.cpp

#include<a.h>

class B
{
public:
    B(int){}
};

B b(a[2]);

int main()
{
  //use b here...
}
问:我可以使用上面的代码吗?这是正确的吗?!

1 个答案:

答案 0 :(得分:0)

上面的代码(差不多)编译,但它可能没有达到你所期望的效果。几个问题。 。

    如果a.h与main.cpp位于同一目录,则
  1. #include<a.h>可能应为#include "a.h"

  2. B b(a[2])可能会创建A类的新实例,而不是使用您在a.h中定义的实例。在使用extern A a;之前添加a,告诉编译器您要使用在另一个文件中声明的a

  3. 最后,根据您的应用程序,有时候全局变量可能不受欢迎。如果合适,请考虑使用封装而不是全局变量。像

    这样的东西
    Class B {
    
    public:
        B(int i){}
    
    private:
        A a(); // Or extern A a;
    };
    

    如果你只需要从b访问a。