我有一个必须是单身的课程,名为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
。