1

次のように名前空間を省略した場合、ここでの質問に従います。

void f(window);

  class window{
    private:
    int a;
    friend void ::f(window);
  };

void f(window rhs){
  std::cout << rhs.a << std::endl;
}

私は奇妙な振る舞いをします:

friend void f(window);

f(window) の前方宣言なしでコンパイルしますが、

friend void ::f(window);

ではない:

error C2039: 'f' : is not a member of '`global namespace''

誰かがその理由を説明できますか? とにかくグローバル名前空間にいる場合、 :: がこの違いを生むのはなぜですか...

感謝?

4

1 に答える 1