隐藏c ++源文件中变量的可见性

时间:2016-03-02 21:37:44

标签: c++ static extern

我正在使用cpp文件来初始化一些数据

// foo.cpp

#include "foo.h"

int val = 5;

&安培;使用标题与项目中的其他文件共享。

// foo.h

extern int val;

inline int get() {
    return val;
}

但我不希望变量 val 可以在项目的其他文件中访问。我想通过 get()函数访问该值。有没有办法实现这个目标?

我尝试了另一种方法......

// foo.h

class foo {

private:

    static int val;

public:

    static int get() {
        return val;
    }

    static void set();
}

&安培; ...

// foo.cpp

void foo::set() {
    val = 5;
}

但它也不起作用。获取链接器错误:未解析的外部符号“private:static int foo :: val”

3 个答案:

答案 0 :(得分:3)

在foo.cpp中添加: -

 int foo::val;

答案 1 :(得分:1)

放入.cpp文件

int foo:val = 5;

给它所需的空间。

答案 2 :(得分:1)

您需要类成员还是自由变量?如果你想要自由变量,只需从头文件中删除变量声明,删除get()的定义(保留声明)并在.cpp文件中实现get()