C ++子类访问主类变量

时间:2013-07-28 03:46:14

标签: c++ class

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

Main.ccp

int x = 10;

int main()
{
    return 0;
}

示例类的cpp

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

错误:

error: 'x' was not declared in this scope

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

3 个答案:

答案 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建议的那样(当我输入它时)。