En PHP et C# les constantes peuvent être initialisé comme ils sont déclarées:
class Calendar3
{
const int value1 = 12;
const double value2 = 0.001;
}
J'ai le C++ suivant la déclaration d'un foncteur qui est utilisé avec une autre classe pour comparer deux vecteurs mathématiques:
struct equal_vec
{
bool operator() (const Vector3D& a, const Vector3D& b) const
{
Vector3D dist = b - a;
return ( dist.length2() <= tolerance );
}
static const float tolerance = 0.001;
};
Ce code est compilé sans problèmes avec g++. Maintenant en C++0x mode (-std=c++0x) le compilateur g++ renvoie un message d'erreur:
erreur: ‘constexpr "nécessaire pour l'initialisation de classe de la donnée membre statique de "tolérance" de la non-type intégral
Je sais que je peux définir et initialiser cette static const
membre en dehors de la définition de la classe. Aussi, un non-constante statique membre de données peuvent être initialisées dans la liste d'initialiseur d'un constructeur.
Mais est-il possible d'initialiser une constante dans la déclaration de classe, tout comme il est possible en PHP ou C#?
Mise à jour
J'ai utilisé static
mot-clé juste parce qu'il a été possible d'initialiser ces constantes dans la déclaration de classe de g++. J'ai juste besoin d'un moyen d'initialiser une constante dans une déclaration de classe, peu importe si elle a déclaré qu' static
ou pas.