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 に答える