我有一个头文件 head.hh 包含这些定义(我正在尝试实现单例模式):
#ifndef HEAD_HH
#define HEAD_HH
class X
{
private:
X() : i(0) {}
public:
static X &instance()
{
static X x;
return x;
}
int i;
};
#endif
我的实现 impl.cc 如下所示:
#include "head.hh"
X &iks = X::instance();
iks.i = 17;
int main(int argc, char **argv)
{
return 0;
}
我认为这段代码是正确的,但我得到编译器错误(使用 g++)
impl.cc:5:1: error: ‘iks’ does not name a type
iks.i = 17;
谁能告诉我为什么我可以从静态 ::instance() 创建引用但不能将它用于任何事情?(如果我在第五行评论一切正常)