使用一个头中的结构,在另一个头的结构中

时间:2017-03-21 17:11:53

标签: c++ struct header-files

我有一个家庭作业,我需要创建一个二叉树,并在每个节点内指向一个链表。

我的linkList程序来自之前的任务。但是在我的二叉树结构中,我想从链表中访问结构。

以下是我所谈论的一个例子。

BinaryTree.h

#ifndef BinaryTree_h
#define BinaryTree_h

#include <iostream>    

using namespace std;    

struct bnode {
    bnode * lChild;
    bnode * rChild;
    string word;

    lnode * lineList; // <--------- This is what I would like to accomplish


};

LinkedList.h

#ifndef LinkedList_h
#define LinkedList_h

#include <iostream>

using namespace std;

struct lnode {
    lnode * prev;
    int data;
    void *pointerData;
    lnode * next;

};

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. #include "LinkedList.h"添加到BinaryTree.h

    #ifndef BinaryTree_h
    #define BinaryTree_h
    
    #include <iostream>    
    #include "LinkedList.h" // <-- here
    
    struct bnode {
        bnode * lChild;
        bnode * rChild;
        std::string word;
    
        lnode * lineList;
    };
    
    #endif
    
  2. 因为lineList成员只是一个指针,你可以(并且应该)转发声明lnode类型,而不必完全定义它:

    #ifndef BinaryTree_h
    #define BinaryTree_h
    
    #include <iostream>    
    
    struct lnode; // <-- here
    
    struct bnode {
        bnode * lChild;
        bnode * rChild;
        std::string word;
    
        lnode * lineList;
    };
    
    #endif
    
  3. 在后一种情况下,您仍然需要在需要访问#include "LinkedList.h"成员内容的任何源文件中使用lineList