3

我想知道子类是否可以访问 main.cpp 文件中的变量。例如:

主文件

int x = 10;

int main()
{
    return 0;
}

示例类的 cpp

Subclass::Subclass ()
{
    x = 5;
}

错误:

error: 'x' was not declared in this scope

我是编码新手,我想知道这是否有可能,如果没有,我该怎么做这样的事情?

4

3 回答 3

5

这是可能的,尽管通常不是一个好主意:

主文件

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;
}
于 2013-07-28T03:51:34.050 回答
2

在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 在源文件之间共享变量?

于 2013-07-28T03:52:13.307 回答
1

C++ 不是 Java。这里没有主类,从类中的方法访问全局变量不是问题。问题是访问在另一个编译单元(另一个源文件)中定义的变量。

解决问题的方法是确保在使用它的编译单元中定义变量,就像 Vaughn Cato 建议的那样(当我输入这个时)。

于 2013-07-28T03:54:20.513 回答