Gemeinsame Nutzung von statischen Variablen in Dateien: namespace vs-Klasse

Gibt es eine Menge Fragen über die statische vs global hier, aber ich glaube meine Frage ist ein bisschen anders.

Möchte ich wissen, ob es eine Möglichkeit zum freigeben einer Variablen gesetzt, die in einem namespace Dateien über die Art und Weise statische Variablen in einer Klasse können.

Ich zum Beispiel codiert das:

//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++;
    }
  }
}

Alle, ergab dies für code und kode:

Foo::code = 1,2,3,4
bar::kode = 0,0,1,1

Wieder einmal, gibt es eine Möglichkeit zum freigeben einer Variablen gesetzt, die in einem namespace Dateien über die Art und Weise statische Variablen in einer Klasse können? Der Grund warum ich Frage ist, weil ich dachte, ich wäre in der Lage, Abschirmung mich aus confliciting Globale Variablen verwenden :: - notation und gerade heraus, ich konnte nicht. Und wie jeder selbst zu missachten Programmierer, ich glaube ich mache es falsch.

  • static ist wahrscheinlich die einzige am meisten überlastet Schlüsselwort in C++. Es bedeutet etwas anderes in diesen beiden Kontexten.
  • ... und in diesem besonderen Fall gerade das Gegenteil von dem, was Sie wollen.
InformationsquelleAutor Morpork | 2012-05-10
Schreibe einen Kommentar