我想知道子类是否可以访问 main.cpp 文件中的变量。例如:
主文件
int x = 10;
int main()
{
return 0;
}
示例类的 cpp
Subclass::Subclass ()
{
x = 5;
}
错误:
error: 'x' was not declared in this scope
我是编码新手,我想知道这是否有可能,如果没有,我该怎么做这样的事情?
这是可能的,尽管通常不是一个好主意:
主文件
int x = 10;
int main()
{
return 0;
}
示例类的 cpp
extern int x;
Subclass::Subclass ()
{
x = 5;
}
您可能想要做的是传递x
对相关类或函数的引用。
至少,以不同的方式构建它是一个好主意:
x.hpp:
extern int x;
x.cpp
#include "x.hpp"
int x = 10;
类.cpp:
#include "x.hpp"
Subclass::Subclass()
{
x = 5;
}
在class'cpp中添加x的extern声明,然后编译器会在其他cpp文件本身中找到x的定义。
对代码稍作改动:
主文件
#include "class.h"
int x = 10;
int main()
{
return 0;
}
示例类的 cpp
#include "class.h"
extern int x;
Subclass::Subclass ()
{
x = 5;
}
头文件class.h
class Subclass {
public:
Subclass ();
};
对于 extern 关键字,请参考:如何使用 extern 在源文件之间共享变量?
C++ 不是 Java。这里没有主类,从类中的方法访问全局变量不是问题。问题是访问在另一个编译单元(另一个源文件)中定义的变量。
解决问题的方法是确保在使用它的编译单元中定义变量,就像 Vaughn Cato 建议的那样(当我输入这个时)。