Partager via


Erreur du compilateur C2864

'member-name' : un membre de données statique avec un initialiseur in-class doit avoir un type intégral const non volatile

Notes

Pour initialiser un static membre de données défini en tant que volatiletype intégral, nonconst ou non, utilisez une instruction de définition de membre. Ils ne peuvent pas être initialisés dans une déclaration.

Exemple

Cet exemple génère l’erreur C2864 :

// C2864.cpp
// compile with: /c
class B  {
private:
   int a = 3;   // OK
   static int b = 3;   // C2864
   volatile static int c = 3;   // C2864
   volatile static const int d = 3;   // C2864
   static const long long e = 3;   // OK
   static const double f = 3.33;   // C2864
};

Cet exemple montre comment corriger l'erreur C2864 :

// C2864b.cpp
// compile with: /c
class C  {
private:
   int a = 3;
   static int b; // = 3; C2864
   volatile static int c; // = 3; C2864
   volatile static const int d; // = 3; C2864
   static const long long e = 3;
   static const double f; // = 3.33; C2864
};

// Initialize static volatile, non-const, or non-integral
// data members when defined, not when declared:
int C::b = 3;
volatile int C::c = 3;
volatile const int C::d = 3;
const double C::f = 3.33;