1

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

extern int var;

a.cpp

#include "a.h"

int var;

bh

#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 */
} 

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

4

2 回答 2

6

ah 不需要包含在 bh 中,只需要包含在 b.cpp 中。这是因为var只有函数定义需要,而不是它的声明。这与在其他标题中不包含标题的规则相一致,除非您绝对必须这样做。

bh

void function();

b.cpp

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

void function() {
    var = 0;
}
于 2012-07-26T15:53:04.880 回答
3

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

class A
{
private:
    int var;

public:
    void function()
    {
        var = 0;
    };
};
于 2012-07-26T15:53:52.390 回答