ここでは静的とグローバルについて多くの質問がありますが、私の質問は少し違うと思います。
クラスの静的変数と同じように、名前空間に配置された変数をファイル間で共有する方法があるかどうかを知りたいです。
たとえば、私はこれをコーディングしました:
//Foo.h
class Foo
{
public:
static int code;
static int times_two(int in_);
};
namespace bar
{
static int kode;
}
-
//Foo.cpp
int Foo::code = 0;
int Foo::times_two(int in_)
{
bar::kode++;
code++;
return 2*in_;
}
-
//main.cpp
int main()
{
cout << "Foo::code = " << Foo::code << endl;
for(int i=2; i < 6; i++)
{
cout << "2 x " << i << " = " << Foo::times_two(i) << endl;
cout << "Foo::code = " << Foo::code << endl;
cout << "bar::kode = " << bar::kode << endl;
if(i == 3)
{
bar::kode++;
}
}
}
コードとkodeでこれを生み出したのは次のとおりです。
Foo::code = 1,2,3,4
bar::kode = 0,0,1,1
繰り返しになりますが、クラスの静的変数と同じように、名前空間に配置された変数をファイル間で共有する方法はありますか?私が尋ねる理由は、::表記を使用することで、グローバル変数の競合から身を守ることができると思っていたのですが、それができないことがわかったからです。そして、他の自尊心のあるプログラマーのように、私はそれを間違っていると信じています。