在C++中访问程序外的变量

Accessing variables outside the program in C++

本文关键字:变量 程序 访问 C++      更新时间:2023-10-16

id.cpp

#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
    static int a;
};
int A::a=20;
class b
{
public:
    b()
    {
     cout<<A::a<<endl;
    }
};
int main()
{
    b *b1 = new b();
    return 0;
}

id1.cpp

#include "stdafx.h"
#include <iostream>
using namespace std;
class c
{
public:
    int get()
    {
        cout<<A::a<<endl;
    }
};
int main()
{
    c c1;
    c1.get();
    return 0;
}

这是他们在一个程序中声明和获得输出的方式,但当我尝试它时,我会收到错误,因为类不是命名空间,或者程序id不包括在id1文件中。。。如何在不使用名称空间和包含头文件的情况下将存储在一个文件中的变量放入另一个文件?

如图所示的两个独立程序(它们是独立的,因为它们都定义了main()(不能以任何简单的方式共享变量。

如果两个单独的文件要集成到一个程序中,因此其中一个main()程序被替换,那么您将依赖于在标头中声明变量A::a并在两个模块中使用该标头的标准技术。报头还将定义类A。这是唯一明智的方法。

您可以编写两次类的定义,每个文件中一次,并在一个文件中将变量声明为extern,然后在另一个文件中定义它,但即使在这种简单的情况下,这也不是特别明智的,如果代码变得更复杂,共享变量更多,它会迅速退化为无法维护的灾难。

当然,您可能需要考虑根本不使用全局变量,而是提供一个访问器函数。但是,最终仍然会得到一个标头,声明类A提供的服务、实现这些服务的代码以及使用这些服务的编码。