Comment déclarer une constante statique variable membre d'une classe qui comporte quelques calculs simples?
J'ai essayé d'avoir un static const variable membre à se rapportent à un autre static const variable dans une classe.
La motivation n'en est que si j'ai besoin de modifier une valeur plus tard (lors du codage), je n'ai pas besoin de changer la totalité de ceux qui sont liés les uns aux autres, un par un.
Par exemple:
class Box
{
public:
Box();
private:
static const double height = 10.0;
static const double lid_height = 0.5 + height;
};
Il ne compile pas et l'erreur était "de la Boîte: hauteur:' ne peut pas apparaître dans une constante expression". Donc je suppose que vous devez taper dans la valeur de static const membre. Mais est-il un moyen d'avoir un membre se rapportent à une autre variable de membre de la même classe, étant donné qu'ils seront tous static const??
Découvrez ce lien
OriginalL'auteur tuzzer | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Définir la valeur de votre static const membre de variables en dehors de la déclaration de la classe, à l'aide de la syntaxe suivante.
c'est de la folie! pourquoi la langue de prévenir static const variabes être initialisée dans la classe? et doe x ont pas de scoop mondial?
Je ne peux pas jeter les variables en dehors de la déclaration de la classe ET à l'intérieur de son fichier d'en-tête. Si l'en-tête est inclus dans plus d'une mise en œuvre (obj) fichier, double symboles sont créés. J'ai besoin de les jeter dans le rpc, la mise en œuvre de fichier de la classe pour qu'il fonctionne sans doublons.
le "#pragma once" empêche que, n'est-ce pas?
OriginalL'auteur
En C++11 vous pouvez utiliser
constexpr
:Sinon, vous pouvez utiliser une fonction inline (mais vous avez besoin d'utiliser l'appeler comme
box::lid_height()
), dont une bonne optimiseur doit être en mesure de le réduire à une constante sur l'utilisation:OriginalL'auteur kennytm
Essayez ceci:
Cela fonctionne je pense que le problème est avec flotteur (double). Mon compilateur a donné le message suivant erreur lorsque j'utilise le double au lieu de int:
J'espère que mon post vous aide à vous 😉
OriginalL'auteur Basem Aljedai
Un exemple de plus
OriginalL'auteur Ashish Surykant Ghadge
L'exception de l'initialisation d'une donnée membre statique à l'intérieur de la déclaration de la classe est de savoir si la donnée membre statique est un const intégrale ou type d'énumération
OriginalL'auteur Ashish Surykant Ghadge