Компиляция прекращена из-за ошибок -Wfatal при объявлении переменной

0

Я пытаюсь реализовать программу Stack, которая состоит из нескольких меньших стеков. Например, например:

|.. |
|.. |
|.. | |.. | |.. | |.. |
|.. | = |.. | + |.. | + |.. |
|.. |
|.. |

В словах предположим, что я хочу реализовать стек размером 1000. Я буду использовать 10 стеков размером 100 каждый.

Как и у меня есть фиксированный размер стека, и в случае, если требуется стек большего размера, создается другой более мелкий стек.

Я написал следующее code-

#include<iostream>
#define MAX 2
using namespace std;
class Node{
    int data;
    Node *next;
    Node(int d){
        data = d;
        next = NULL;
    }
};
Node *n = NULL;
class multiStack{
    public:
    Node *head;
    int size = 0;
    void push(int d){
        if(size < MAX){
            if( head == NULL){
                head = new Node(d);
            }else{
                Node *p = new Node(d);
                p->next = head;
            head = p;
            }
            n = head;
            size++;
        }else{
            multiStack Sprime;
            Sprime.head->next = n;
            Sprime.push(d);
        }
    }
    void print(){
        Node *p;
        p = n;
        while (p!=null){
            cout<<p->data<<" ";
            p = p->next;
        }
    }
};
int main(){
    multiStack s;
    s.push(2);
    s.push(1);
    s.push(4);
    s.print();
    return 0;
}

Компилятор codepad.org дает "Ошибка завершения компиляции из-за -Wfatal-errors" в следующей строке code-

int size = 0 ;

Thanx заранее Если бы вы могли решить эту ошибку.

Ниже приведены сведения об ошибке -
Изображение 174551

  • 1
    Ну что такое "фатальные ошибки"?
  • 0
    когда код написан, и компилятор не связывает его с какой-либо родительской функцией или круглой скобкой. Пример: - Если вы пишите if if if (x> y) x ++; у ++; еще {y ++; } Это приведет к фатальной ошибке, которая не принадлежит никому, если
Показать ещё 4 комментария
Теги:
pointers
linked-list
stack

1 ответ

0
Лучший ответ

То, что вы делаете, возможно в С++ 11, но не в более ранних версиях. Если ваш компилятор поддерживает его, вы можете добавить -Wc++11-extensions для своих флагов компиляции.

В противном случае выполните, как @cHao, и инициализируйте значение 0 в конструкторе или списке инициализации конструктора.

class multiStack{
    public:
      Node *head;
      int size;

      multiStack() : head(0), size(0) { }

    // the rest of your class
};

Вам также нужно инициализировать head, которую я показал выше.

  • 0
    Благодарю . , Я реализовал конструктор и пытался сделать то же самое, используя флаг компилятора. Но проблема в том, что я использую codepad.org для компиляции.
  • 0
    Инициализация его в конструкторе должна работать. Я обновил код с учетом предупреждений, генерируемых codepad.org. У вас все еще есть проблема, связанная с тем, что у Node есть приватный конструктор, но это легко исправить (или открыть другой вопрос).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню