通过其他文件中的另一个全局变量使用类的全局实例



我有这些文件(简体版)

A.H

class A
{
public:
     A(int){}
int operator [](int a){return a;}
};
A a(2);

主.cpp

#include<a.h>
class B
{
public:
    B(int){}
};
B b(a[2]);
int main()
{
  //use b here...
}

问:我可以使用上面的代码吗?正确吗?!

上面的

代码(几乎)可以编译,但它可能不会达到您的预期。几个问题 . . .

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

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

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

Class B {
public:
    B(int i){}
private:
    A a(); // Or extern A a;
};

如果您只需要从 b 访问 a,则可以工作。

相关内容

  • 没有找到相关文章

最新更新