C ++变量范围在多个文件中

时间:2012-07-26 15:51:25

标签: c++ scope

如何在特定文件中创建可见变量/函数? 例如,假设我有这种文件的层次结构:

A.H

extern int var;

a.cpp

#include "a.h"

int var;

b.h

#include "a.h"

void function();

b.cpp

#include "b.h"

void function() {
    var = 0;
}
在main.cpp中

我希望能够拨打function(),但不能访问var变量

#include "b.h"

int main(int argc, char** argv) {
    function(); /* possible to call */
    var = 0 /* var shouldn't be visible */
} 

我不希望文件a.h包含在main.cpp中 - 只有b.h.我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:6)

a.h不需要包含在b.h中,只需要包含在b.cpp中。这是因为函数定义只需要var,而不是声明。除非你绝对必须这样做,否则这条规则不会在其他标题中包含标题。

b.h

void function();

b.cpp

#include "b.h"
#include "a.h"

void function() {
    var = 0;
}

答案 1 :(得分:3)

我认为您需要停止尝试使用文件的可见性来隐藏信息,并开始查看C ++类,这些类允许您通过私有成员“隐藏”“方法”使用的内容:

class A
{
private:
    int var;

public:
    void function()
    {
        var = 0;
    };
};