Программа выдает ошибку, когда я увеличиваю частную статическую переменную в C ++ - PullRequest
0 голосов
/ 15 мая 2018

Я создал приватную статическую переменную, которая отслеживает количество элементов в связанном списке.

struct node
{
        int data;
        node *next;
};    
class linkedList
    {
            private:
                    node *head,*tail;
                    static int listSize;
            public:
                linkedList()
                {
                    head=NULL;
                    tail=NULL;
                }
                void insert(int n)
                {
                        node *temp=new node;
                        temp->data=n;
                        temp->next=NULL;
                        if(head == NULL)
                        {
                                head=temp;
                                tail=temp;
                        }
                        else
                        {
                                tail->next=temp;
                                tail=temp;
                        }
                        linkedList::listSize+=1;
                }
    };
    void main()
    {
         linkedList l;
         l.insert(10);
         l.insert(20);
    }

Компилятор выдает ошибку, когда достигает строки connectedList :: listSize + = 1;

ошибка: «связанный список» не был объявлен.

1 Ответ

0 голосов
/ 15 мая 2018

После того, как ваши опечатки исправлены (inser(20) вместо insert(20) и : вместо ; в linkedList(), ваша программа почти компилируется.

Отсутствует только одна вещь: вам нужнореализовать где-нибудь переменную listSize, например, поставив int linkedList::listSize; перед main:

...
int linkedList::listSize;   /(/ <<< add this

void main()
{
  linkedList l;
  l.insert(10);
  l.insert(20);
}

Но почему вы используете статическую переменную для подсчета элементов списка? Возможно, вы хотите listSize быть обычным (не статичным) членом класса, так же как head и tail:

class linkedList
{
private:
  node * head, *tail;
  int listSize;      // no static
public:
  ...

и отбросить int linkedList::listSize;, предложенный ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...