Ce que je veux arriver est la fonction pushFront (int) pour le faire:C++ Stack Tableau mise en œuvre
bool stack::pushFront(const int n) { items[++top] = n; // where top is the top of the stack return true; // only return true when the push is successful }
articles est un type struct de l'objet "item". Jetez un coup d'oeil:
class stack { stack(int capacity); ~stack(void); ... private: int maxSize; // is for the item stack int top; // is the top of the stack struct item { int n; }; item *items;
j'ai défini le cteur à l'objet de classe de la pile et dtor comme suit:
stack::stack(int capacity) { items = new item[capacity]; if (items == NULL) { throw "Cannot Allocoate Sufficient Memmory"; exit(1); } maxSize = capacity; top = -1; } stack::~stack(void) { delete [] items; items = NULL; maxSize = 0; top = -1; }
Oui la question principale pour moi est les articles [++ haut] = n ; déclaration. J'ai essayé de trouver des façons de contourner comme ci-dessous:
bool stack::pushFront(const int n) { int *a = new int[maxSize]; a[++top] = n; return true; }
Mais je ne peux pas glisser (+) « a » tableau pour voir les éléments du tableau réels ... Ce qui est ce que j'espérais arriver.
Ce que je veux c'est pour les éléments d'instruction [++ top] = n; pour travailler ..
En fait, les éléments de l'état [++ haut] = n; dans le corps de la pile bool :: fonction pushFront (const int n), est invalide et je reçois cette erreur: erreur C2679: binaire '=': aucun opérateur trouvé qui prend un opérande de droite de type 'const int' (ou il n'y a pas de conversion acceptable). Suivi par: pourrait être 'stack :: item & pile :: item :: opérateur = (const pile :: item &)' Comment puis-je m'en sortir en écrivant le code comme éléments [++ top] = n; ? – user40120
partout j'utilise des éléments comme un tableau assigné à n, j'obtiens une erreur:/ – user40120
Comme Geerad l'a souligné, il devrait être: éléments [++ top] .n = n; parce que les éléments sont une structure. –