Static Const Initialisation de la Structure de Tableau dans la Classe C++

Je comprends, si je veux un const tableau dans une classe de l'espace de noms en C++ je ne peut pas faire:

class c
{
private:
  struct p
  {
    int a;
    int b;
  };
  static const p pp[2];
};

const c::p pp[2] =  { {1,1},{2,2} };

int main(void)
{
  class c;
  return 0;
}

Que je doit faire:

class c
{
public:
  struct p
  {
    int a;
    int b;
  };
  static const p pp[2];
};

const c::p pp[2] =  { {1,1},{2,2} };

int main(void)
{
  class c;
  return 0;
}

Mais cela nécessite un "p" et "pp" pour être publique, quand je veux qu'ils soient privés. Il n'y a pas moyen en C++ à l'initialisation d'privé tableaux statiques?

MODIFIER: -------------------
Merci pour les réponses. En plus j'ai envie de cette classe à être une bibliothèque, des fichiers d'en-tête uniquement, à utiliser par un projet principal. Y compris les suivantes initialiser les résultats "de plusieurs définition des" erreurs lors de l'inclusion en plusieurs fichiers.

const c::p c::pp[2] =  { {1,1},{2,2} };

Comment puis-je résoudre ce problème?

  • En outre, la question réelle des réponses, en C++ (void) est inutile et mauvaise pratique, tout comme class c n'est rien. Vous avez besoin d'avoir int main() { c varname; return 0; }
  • Merci - pourquoi est - (void) mauvaise pratique?
  • (void) ne fait pas de mal, mais il ne fait pas bon non plus. Il est pris en charge pour la compatibilité avec le C, mais cela pourrait changer dans les versions futures.
InformationsquelleAutor Sam | 2011-01-05