これらの定義を含むヘッダー ファイル 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;
static ::instance() から参照を作成できるのに、それを何にも使用できない理由を誰か教えてもらえますか? (5 行目にコメントすると、すべて正常に動作します)