erreur: invalid use of non-membre de données statiques
class Stack
{
private:
int tos;
const int max = 10;
int a[max];
public:
void push(int adddata);
void pop();
void printlist();
};
erreur: invalid use of non-membre de données statiques 'max'
quoi de mal dans le code, et s'il vous plaît m'aider avec une bonne correction.
Merci
Vous devez vous connecter pour publier un commentaire.
Il est obligatoire que la taille de la matrice seront connus lors de la compilation pour les non-allocation de tas (pas à l'aide de
new
d'allouer de la mémoire).Si vous êtes à l'aide de C++11,
constexpr
est un bon mot-clé à connaître, qui est spécifiquement conçu à cet effet.Si vous n'êtes pas avoir de C++11 et pourtant,
static
pour en faire une compilation constante de temps comme d'autres l'ont souligné.Que le message d'erreur indique, max est un non-membre statique de la Pile; si vous ne pouvez accéder dans le cadre d'une Pile d'objets. Vous tentez d'y accéder comme s'il s'agissait d'un membre statique, qui existe indépendamment de tout les objets.
Par conséquent, vous devez le rendre statique.
Si l'initialisation est dans le fichier d'en-tête, puis chaque fichier qui contient le fichier d'en-tête aura une définition du membre statique. Ainsi, au cours de la phase d'édition de liens, vous obtiendrez de l'éditeur de liens erreurs que le code d'initialisation de la variable sera défini dans plusieurs fichiers source.
Que le compilateur dit de rendre les données membres statiques
Vous avez besoin de faire un max de compiler constante de temps:
static const int max;
dans l'en-tête etconst int Stack::max = 10;
dans le fichier cppmax
qui doit apparaître dans l'en-tête de trop.inline static const int max(){return 10; }
L'erreur Conceptuelle que vous faites est que vous essayez d'initialiser les valeurs de la classe dans la définition de classe .C'est la raison pour laquelle les constructeurs existent .À l'aide d'un paramétrées constructeur de définir des valeurs de haut de pile et de sa taille.
Lors de la prise de la pile de passer la taille de la pile qui sera créé: