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 volatile
type 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;