我剛剛學習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