2011-09-10 32 views
0

我有這個在我的私人類聲明C++怪異的結構和bitset的錯誤

#include "stdafx.h" 
using namespace std; 
    template <typename Key, typename T> 
    class A{ 
    //.... 
    private: 
     static const unsigned int HSIZE = 32; 
     struct Bucket { 
      Key key; 
      T value; 
      bitset<HSIZE> jumpMap; 
     }; 
    //.... 
    }; 

提供了以下錯誤:

Error 1 error C4430: missing type specifier - int assumed 
Error 2 error C2059: syntax error : '<' 
Error 3 error C2238: unexpected token(s) preceding ';' 

當我刪除位集線,它給了我沒有錯誤。我究竟做錯了什麼?

編輯:添加更多的相關線路

+1

這是真碼嗎?因爲我沒有看到「Key」,「T」,「HMAX」是什麼 - 它們是被定義的嗎? –

+0

讓我添加完整的類定義 – JavierIEH

+0

無需添加完整的類定義,特別是如果它很長。只是事情,我要求:)另外,你是否包含了位集標題和包含命名空間標準? –

回答

3

您是否包含了位集標題?我想你錯過了?

+0

耶穌是誰?我將它包含在stdfax.h中,但它不起作用。但是,如果我將它包含在標題本身中,它就可以工作。有人可以解釋這是爲什麼嗎? – JavierIEH

+0

爲什麼你認爲,'stdfax'將包括所有標題:) –

+0

看到這個問題 - http://stackoverflow.com/questions/676385/stdafx-h-when-do-i-need-it –

2

應該HMAX是HSIZE呢?否則,請確保您包含< bitset>,並且該名稱在範圍內。你可能在你的代碼中有一個使用命名空間std,因爲你不符合std ::。但我打賭去HMAX < - > HSIZE。

+0

這是一個錯字,錯誤仍然存​​在 – JavierIEH

+0

關鍵和T怎麼樣,關心發佈所有相關的代碼? –