不完整型,前瞻性声明

时间:2012-11-02 20:23:57

标签: c++ struct forward-declaration

我只是在学习C ++,而且我遇到了很多问题。现在我正在尝试使用堆和哈希表来实现频率队列,所以我正在尝试为哈希表托管和堆托盘创建结构。我做的是......

  1 #include<iostream>
  2 #include<string>
  3 #include "freqq.h"
  4
  5 using namespace std;
  6
  7 
  8 
  9
 10 struct _hashEntry {
 11   string word;
 12   int heapPstn;
 13 };
 14
 15 struct _heapEntry {
 16   int frequency;
 17   hashEntry* wordInHash;
 18 };

^^ the .cpp, 
 1 #define FREQQ_H_
  2 #include <string>
  3
  4 using namespace std;
  5
  6 class FreqQ {
  7  public:
  8   struct _heapEntry;
  9   typedef struct _heapEntry heapEntry;
 10
 11   struct _hashEntry;
 12   typedef struct _hashEntry hashEntry;
 13

^^ .h。为简单起见,我已经淘汰了其他方法。

我收到了错误 无效使用不完整类型的构造FreqQ :: _heapEntryâ freqq.h:8:10:错误:转发声明âstructFreqQ:: _heapEntryâ

我无法弄清楚为什么对我的生活。

任何想法??

谢谢!

1 个答案:

答案 0 :(得分:2)

我不明白。您是在.cpp?

中定义_hashEntry_heapEntry结构

在使用结构的class FreqQ声明之前将结构声明移动到.h。