C ++:仅通过内联函数公开静态全局变量

时间:2016-09-05 01:39:00

标签: c++ encapsulation

我有一个必须是单身的课程,名为Foo。我已将其单身实现为静态成员函数。目前,我的代码如下所示:

foo.h中:

class Foo {
public:
    static void fillBarWithInfo(Bar &bar); // want to make this inline
};

Foo.cpp中:

static Bar myBar;

static void qux() {
    myBar = ...;
}

void Foo::fillBarWithInfo(Bar &bar) {
    bar = myBar;
}
...

但是,经过一些分析后,我发现调用fillBarWithInfo的开销非常大。并且由于函数太短,我宁愿将其内联,并将函数的定义放在头文件中。

但是,我不想将变量myBar暴露给外界(例如包括Foo.h的文件)。但如何立即实现这两个目标?

一种解决方案是使myBar成为Foo的私有静态成员。这有点作用,但问题是qux(),它必须是一个静态函数,然后才能访问它。

还有其他想法吗?我想我可以在头文件中声明extern Bar myBar;但是用户可以访问它,打破我的封装。我只希望通过这个内联函数公开myBar

0 个答案:

没有答案