在C++中访问程序外的变量
Accessing variables outside the program in C++
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
提供的服务、实现这些服务的代码以及使用这些服务的编码。
相关文章:
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 尝试将带有值的不同变量添加到一小串程序C++中
- 为什么我的 c++ 程序检查不是初始化的变量?
- 修改程序的入口点时未调用全局变量的构造函数
- 为什么在堆栈和堆上创建变量会产生相同的程序集代码?
- C++变量在调用 x64 程序集函数后重置为 0
- C ++程序如何返回我的数组或写入全局变量
- 如何使用将字符串拆分为 for 循环中的变量的程序
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- C++多线程程序:变量定义为类成员的隔离错误
- 程序如何知道静态变量是否需要初始化?
- GDB 8.1 无法在单线程简单程序中跟踪 std::string 变量的值
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- 需要循环帮助以迭代方式添加到程序集中的总和变量
- 声明一个变量,该变量在 c++ 或 c 中具有值,当程序终止时不会被销毁
- C vs 2017设置全局变量 - 程序仅在调试中使用断点
- 尝试打印变量.程序崩溃