在這裏有很多關於static vs global的問題,但我認爲我的問題有點不同。在文件之間共享靜態變量:namespace vs class
我想知道是否有一種方法可以共享放置在名稱空間中的變量,這些變量可以通過類中的靜態變量的方式跨文件進行。
例如,我編寫這樣的:
//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++;
}
}
}
所有這一切產生了這個代碼和科德:
Foo::code = 1,2,3,4
bar::kode = 0,0,1,1
再次,是否有辦法共享一個變量放置在命名空間跨文件的方式靜態變量可以在類中?我問的原因是因爲我認爲我可以通過使用::符號來保護自己免受全局變量衝突,並且發現我不能。就像任何不自信的程序員一樣,我相信我做錯了。
'static'可能是在C中最重載關鍵字++。這意味着在這兩種情況下有所不同。 – Flexo
......在這種特殊情況下,恰恰與你想要的相反。 –