Avoir d'erreur “tableau lié n'est pas une constante entière avant ']' token”
Je suis en train d'implémenter une pile à l'aide d'un tableau, mais j'ai un message d'erreur.
class Stack{
private:
int cap;
int elements[this->cap]; //<--- Errors here
int top;
public:
Stack(){
this->cap=5;
this->top=-1;
};
La ligne indiquée a ces erreurs:
Multiple markers at this line
- invalid use of 'this' at top level
- array bound is not an integer constant before ']' token
Ce que je fais mal?
Pour un
... et C++ n'ont pas VLAs.
Aussi, la taille d'un membre de la matrice doit être connu au moment de la compilation.
this
n'y existent pas....... et C++ n'ont pas VLAs.
Aussi, la taille d'un membre de la matrice doit être connu au moment de la compilation.
OriginalL'auteur user1849859 | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
En C++, la taille d'un tableau doit être une constante connue à la compilation. Vous recevrez un message d'erreur si ce n'est pas le cas.
Ici, vous avez
Avis que
this->cap
n'est pas une constante connue à la compilation, car il dépend decap
est.Si vous voulez avoir une variable tableau de taille dont la taille est déterminée plus tard, pensez à utiliser
std::vector
, qui peuvent être redimensionnées lors de l'exécution.Espérons que cette aide!
OriginalL'auteur templatetypedef
Vous ne pouvez pas utiliser
this
dans la déclaration comme ça.this
est une constante pointeur passé à la non-méthodes statiques dans votre classe. Il n'existe pas en dehors du champ d'application.Tel tableau déclarations sont des valeurs constantes ou expressions pour la taille. Vous ne voulez pas que, vous voulez un dynamicly contenant de la taille. La solution est d'utiliser un
std::vector
.OriginalL'auteur Mohamad Ali Baydoun
Puisque d'autres l'ont déjà expliqué la cause de ce problème, voici une solution possible pour résoudre le problème. Depuis, il semble que vous ne pouvez pas savoir la taille de la matrice au moment de la compilation et de l'affectation peut restreindre l'utilisation de
std::vector<int>
envisager d'utiliser un pointeur de mise en œuvre.Ajouté. Lire sur le c++ copier-swap-idiome pour bien comprendre pourquoi nous devons mettre en œuvre tout cela Si l'on utilise un tableau dynamique.
OriginalL'auteur andre
Changement
à
OriginalL'auteur vitalis emanuel setiawan