2 votes

Erreurs du compilateur C++

Je suis en train d'écrire un programme d'implémentation de pile et de file d'attente en c++, j'ai terminé la partie pile, mais lors de la compilation j'obtiens ces erreurs

arrayListImp.cpp:18:19: error: expected unqualified-id
                arrayList[++top]= x;
                                ^
arrayListImp.cpp:28:13: error: 'arrayList' does not refer to a value
                itemPoped=arrayList[top];
                          ^
./arrayList.h:3:7: note: declared here
class arrayList{
      ^
arrayListImp.cpp:35:9: error: 'arrayList' does not refer to a value
        return arrayList[top];
               ^
./arrayList.h:3:7: note: declared here
class arrayList{
      ^
arrayListImp.cpp:46:9: error: 'arrayList' does not refer to a value
                cout<<arrayList[i]<<endl;
                      ^
./arrayList.h:3:7: note: declared here
class arrayList{
      ^
4 errors generated.

Voici le fichier d'en-tête

#ifndef ARRAYLIST_H

class arrayList{

public:
    arrayList();
    static const int maxSize = 10;
    int array[10];
};

class stack : public arrayList{

public:
    stack();    
    void push(int x);
    void pop();
    int Top();
    int isEmpty();
    void print();
    int x;
    int top;
    int itemPoped;
    int i;
};

#define ARRAYLIST_H
#endif

arrayListImp.cpp

#include <iostream>
#include "arrayList.h"
using namespace std;

//Stack implementation

stack::stack(){

    top = -1;
}

void stack::push(int x){

    if (top == maxSize -1){
        cout<<"Stack overflow"<<endl;
    }
    else{
        arrayList[++top]= x;
        cout<<x<<", is pushed on to the stack"<<endl;
    }
}

void stack::pop(){
    if (top == -1){
        cout<<"Stack underflow"<<endl;
    }
    else{
        itemPoped=arrayList[top];
        top--;
        cout<<itemPoped<<", is poped from the stack"<<endl; 
    }
}

int stack::Top(){
    return arrayList[top];
}

int stack::isEmpty(){
    if (top == -1) return 1;
    return 0;
}

void stack::print(){
    cout<<"Stack: "<<endl;
    for (i = 0; i<=top; i++){
        cout<<arrayList[i]<<endl;

    }
}

arrayListUse.cpp

#include <iostream>
#include "arrayList.h"
using namespace std;

int main()
{
    //Stack testing
    stack S;
    S.push(1);S.print();
    S.push(2);S.print();
    S.push(3);S.print();
    S.pop();S.print();
    S.push(4);S.print();

    //Queue testing

    return 0;
}

Pouvez-vous m'indiquer ce que je fais de travers ?

0voto

Aeonos Points 150

Vous avez toujours écrit

arrayList[...]

quel est le nom de votre classe, mais en lisant le code, il semble que vous vouliez écrire

array[...]

qui accède aux données.

0voto

overseas Points 918

Vous devriez simplement lire vos messages d'erreur.

  1. Vous devez utiliser array au lieu de arrayList qui est le nom de la classe. Il suffit donc de faire référence à la variable.

    Le message d'erreur que vous avez reçu ressemble à quelque chose comme

    test.cpp: In member function ‘void stack::push(int)’:
    test.cpp:44:18: error: expected unqualified-id before ‘[’ token
             arrayList[++top]= x;
                      ^

    Lorsque vous vérifiez la ligne, vous voyez immédiatement ce qui ne va pas.

  2. Vous déclarez un constructeur arrayList::arrayList() mais vous ne le définissez pas. Vous pouvez soit laisser tomber la déclaration, soit l'implémenter dans le fichier cpp.

    arrayList::arrayList() {
        // do some initialization
    }

    Le message d'erreur que vous avez reçu ressemble à quelque chose comme

    /tmp/cc4y06YN.o:test.cpp:function stack::stack(): error: undefined reference to 'arrayList::arrayList()'

    Le code pouvait être compilé, mais il n'était pas lié. Ainsi, toutes les déclarations peuvent être correctes, mais un symbole est manquant. C'est généralement le cas lorsque vous avez déclaré quelque chose auquel vous faites référence, mais que vous ne l'avez jamais défini.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X