Quel est l'effet static const sur un espace de noms membre

//MyClass.h

namespace MyNamespace {

  static const double GasConstant = 1.987;

  class MyClass
  {
    //constructors, methods, etc.
  };
}

J'ai déjà eu GasConstant déclaré dans la MyClass déclaration (et avait une définition distincte dans le fichier source depuis C++ ne prend pas en charge const initialisation de la non-types intégraux). J'ai cependant besoin d'accéder à partir d'autres fichiers et aussi logiquement, il me semble qu'il devrait se trouver au niveau espace de noms.

Mes questions, quel est l'effet static const avoir dans ce cas? Clairement const signifie que je ne peut pas affecter une nouvelle valeur à GasConstant, mais que fait un membre statique à l'espace de noms moyenne. Est-ce similaire à la statique à la portée de fichier, lorsque le membre n'est pas accessible de l'extérieur de l'unité?

  • Est-ce dans un fichier d'entête (.h) ou dans un fichier d'implémentation (.rpc) ???
  • C'est dans un fichier d'entête (.h).
  • En C++ il n'existe pas de fichier portée. Il y a seulement de l'espace de noms d'étendues en C++ si vous êtes à l'extérieur de fonctions et de classes. Aussi, si vous continuez de lire quelques pages de ce qu'ils appellent "global", ils signifient généralement l'espace de noms global et d'autres espaces de noms inclus. cplusplus.com est connu pour ses inexact d'utiliser le mot "global", par exemple. Donc, si quelque chose qui explique les effets de "statiques", "de portée mondiale", ils signifient généralement son effet dans l'espace de noms de la portée.