我想知道子类是否可以从main.cpp文件中访问变量。例如:
Main.ccp
int x = 10;
int main()
{
return 0;
}
示例类的cpp
Subclass::Subclass ()
{
x = 5;
}
错误:
error: 'x' was not declared in this scope
我是编码的新手,我想知道这是否有可能,如果没有,我该怎么做呢?
答案 0 :(得分:5)
这是可能的,虽然通常不是一个好主意:
Main.ccp
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;
class.cpp:
#include "x.hpp"
Subclass::Subclass()
{
x = 5;
}
答案 1 :(得分:2)
在class'cpp中添加x的extern声明,然后编译器会在其他cpp文件中找到x定义。
对代码稍作修改:
Main.cpp的
#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关键字,请参考:How do I use extern to share variables between source files?
答案 2 :(得分:1)
C ++不是java。这里没有主类,从类中的方法访问全局变量不是问题。问题是访问另一个编译单元(另一个源文件)中定义的变量。
解决问题的方法是确保变量是在你使用它的编译单元中定义的,就像Vaughn Cato建议的那样(当我输入它时)。