我刚刚学习C++,并遇到很多问题。现在我试图用堆和哈希表实现一个频率队列,所以我试图为散列表entrys和堆entrys创建结构。我做的是...不完整类型,正向声明
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。为了简单起见,我已经消除了其他方法。
,我发现了错误 无效使用不完全类型的âstructFreqQ :: _heapEntryâ freqq.h:8:10:错误:âstructFreqQ :: _heapEntryâ
而且我想不通的向前声明为什么要为我的生活。
任何想法??
谢谢!
我认为问题在于编译器认为在类FreqQ中声明的'struct _heapEntry;'是与源文件中声明的'struct _heapEntry'不同的'struct _heapEntry'。我想你太努力了。你清楚地知道编程,但现在坚持使用简单的C++语法。在FreqQ中丢失typedefs。 – john
这就是我最初试图做的,但它产生了相同的错误 – user1795370
丢失typedef和结构。正如alestansis所说,将这些结构移到头文件中。如果发布更新的代码仍然不清楚。 – john