C 类没有名为“blah”的成员

新手上路,请多包涵

我有一个 .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'

我不知道如何解决这个问题。我还要如何设置开始和结束对象?如您所知,我是一名学习 C++ 的 Java 程序员。

原文由 Nate Glenn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 339
2 个回答
  • 您将 LLNode 拼错为 LLnode
  • 您需要向 LLNode 类添加一个默认构造函数
  • 您需要在 LinkedList 构造函数中获取 this->beginningthis->end 成员的地址:

.

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

原文由 Ayjay 发布,翻译遵循 CC BY-SA 3.0 许可协议

您在类声明中没有 LinkedList::LinkedList() 的声明。

应该 给您一个不同的错误; g++给了我

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

你确定你已经发布了你正在编译的 确切 代码吗?将您的代码缩小为小而完整的代码,并将确切的源文件复制并粘贴到您的问题中。 (例如,没有声明 LLnode )。向我们展示一些我们可以自己尝试的东西。

原文由 Keith Thompson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题