В классе C ++ нет члена с именем «бла» - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть файл .h со следующим:

#ifndef CS240_LINKED_LIST_H
#define CS240_LINKED_LIST_H

#include <string>

//! LLNode implements a doubly-linked list node
class LLNode {
        friend class LinkedList;
    public:

        LLNode(const std::string & v, LLNode * p, LLNode * n) :
          value(v), prev(p), next(n)
        {
        }

    private:
        std::string value;        //!< value stored in the node
        LLNode * prev;            //!< pointer to previous node in the list
        LLNode * next;            //!< pointer to next node in the list
};


//! LinkedList implements a doubly-linked list
class LinkedList
{
    public:

        //!  No-arg constructor.  Initializes an empty linked list
        LinkedList();


        //!  Copy constructor.  Makes a complete copy of its argument
        LinkedList(const LinkedList & other);

    private:
        //!  two dummy nodes to keep track of the beginning and end of the list.
        LLnode beginning;
        LLnode end;
        int size;
};

#endif

В файле cpp у меня есть:

#include "LinkedList.h"

LinkedList::LinkedList(){
    this->beginning.prev = NULL;
    this->beginning.next = this->end;
    this->end.prev = this->beginning;
    this->end.next = NULL;
}

Вот вывод:

>g++ -o LinkedList.o LinkedList.cpp
In file included from LinkedList.cpp:1:
LinkedList.h:37: error: 'LLnode' does not name a type
LinkedList.h:38: error: 'LLnode' does not name a type
LinkedList.cpp: In constructor 'LinkedList::LinkedList()':
LinkedList.cpp:4: error: 'class LinkedList' has no member named 'beginning'
LinkedList.cpp:5: error: 'class LinkedList' has no member named 'beginning'
LinkedList.cpp:5: error: 'class LinkedList' has no member named 'end'
LinkedList.cpp:6: error: 'class LinkedList' has no member named 'end'
LinkedList.cpp:6: error: 'class LinkedList' has no member named 'beginning'
LinkedList.cpp:7: error: 'class LinkedList' has no member named 'end'

Я не знаю, как это исправить. Как еще я бы установил начальный и конечный объекты? Просто чтобы вы знали, что я программист на Java, изучаю C ++.

Ответы [ 3 ]

4 голосов
/ 25 сентября 2011
  • У вас есть ошибка LLNode как LLnode.
  • Вам необходимо добавить конструктор по умолчанию в класс LLNode
  • вам нужно взять адрес членов this->beginning и this->end в конструкторе LinkedList:

.

LinkedList::LinkedList(){
    this->beginning.prev = NULL;
    this->beginning.next = &this->end;
    this->end.prev = &this->beginning;
    this->end.next = NULL;
}
0 голосов
/ 25 сентября 2011

У вас нет объявления LinkedList::LinkedList() в объявлении класса.

То, что должно дать вам другую ошибку; g ++ дал мне

error: definition of implicitly-declared ‘LinkedList::LinkedList()’

Вы уверены, что отправили точный код, который вы компилируете? Сузьте свой код до чего-то небольшого, но полного и скопируйте и вставьте точные исходные файлы в свой вопрос. (Например, нет объявления LLnode). Покажите нам то, что мы можем попробовать сами.

0 голосов
/ 25 сентября 2011

Вам нужно объявить конструктор.Попробуйте:

class LinkedList
{
    private:
        LLnode beginning;
        LLnode end;
    public:
        LinkedList();
};
...