我想知道子类是否可以访问main.cpp文件中的变量。例如:访问主类变量的C++子类
Main.ccp
int x = 10;
int main()
{
return 0;
}
示例类的CPP
Subclass::Subclass()
{
x = 5;
}
错误:
error: 'x' was not declared in this scope
我是新来的编码,我想知道这是否在某种程度上可能如果不是,我该怎么做这样的事情?
我想知道子类是否可以访问main.cpp文件中的变量。例如:访问主类变量的C++子类
Main.ccp
int x = 10;
int main()
{
return 0;
}
示例类的CPP
Subclass::Subclass()
{
x = 5;
}
错误:
error: 'x' was not declared in this scope
我是新来的编码,我想知道这是否在某种程度上可能如果不是,我该怎么做这样的事情?
这是可能的,但通常不是一个好主意:
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;
}
Add extern dec在class'cpp中插入x,然后编译器会在其他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?
我这样做了,现在它说undefined引用'x'而不是 – Rapture686
@ user2548588有趣的是,它对我有用。至少你应该在头文件中有一个类声明,并且包含两个cpp文件,对吧?更具体地说,我编辑了我的答案。 – lulyon
C++不是java。你在这里没有主类,并且从类中的方法访问全局变量不是问题。问题在于访问另一个编译单元(另一个源文件)中定义的变量。
解决这个问题的方法是确保变量是在你使用它的编译单元中定义的,就像Vaughn Cato建议的(当我输入这个时)。
全局变量是你应该很少使用的东西,如果有的话。 – Borgleader
这是做什么的原因? – soon
我正在使用SDL,并在主内部创建了SDL_Surface变量,并尝试从另一个类访问它们,但我不知道如何。我需要能够从两个类访问它 – Rapture686