2013-03-25 83 views
1

我有這個CResources類聲明, 和我得到這個錯誤C++:「錯誤C4430:缺少類型說明符 - 假定INT」對於構造和無效的聲明析構函數

「錯誤C4430:缺少類型說明符 - 假定爲int」

#include <set> 
#include <unordered_set> 


const int R_NUMBER = 5; 

typedef enum { 
    M, 

} OBJECT_ENUM; 


typedef enum { 
    FILE_O, 

} RESOURCE_ENUM; 

typedef struct _resourcesMapping { 
    CBuffer apiBuffer; 
    int ObjectIndex; 
}; 
    class CResources { 
     int rCount; 
     int* resources; 

    public: 
     CResources(int); 
     ~CResources(); 
     int getCount(); 
     int getObjectsCount(); 
     int rOrder[R_NUMBER]; 
     std::set<int> ObjectsSet; 
    }; 

我在做什麼錯?

在減速前添加代碼。

+0

在何處以及如何被定義R_NUMBER? – 2013-03-25 08:35:50

+1

看起來沒問題,也許你在此之前錯過了一個分號?你能發佈整個代碼嗎? – nvoigt 2013-03-25 08:36:56

+0

@nvoigt我在聲明前添加了代碼。 – talon 2013-03-25 08:48:49

回答

3

你忘了#include <set>

EDIT

在管線18 AFTER:CBuffer apiBuffer;,標識符CBuffer是未知的。 此外,typedef struct _resourcesMapping上的typedef被忽略,因爲您沒有聲明任何內容。

此外,以下劃線開頭的標識符保留在全局名稱空間中,不應使用_resourcesMapping

+0

這個錯誤似乎在他的代碼中的其他地方 – 2013-03-25 08:54:27

+0

@Aniket:那麼'CBuffer'呢? – 2013-03-25 08:55:16

+0

你確定這是他正在使用的編譯單元之一嗎?它可能是實際源文件的一個片段 – 2013-03-25 08:55:49

1
typedef struct _resourcesMapping { 
    CBuffer apiBuffer; 
    int ObjectIndex; 
}; //missing typedef name 

它應該是這樣的:

typedef struct _resourcesMapping { 
    CBuffer apiBuffer; 
    int ObjectIndex; 
}ResourcesMapping; 

除此之外,我不認爲有任何錯誤。你的錯誤似乎在別處。

0

我想你只需要:

using namespace std; 

它幫助我反正。

0

一般使用「using namespace xxx;」是一個壞主意。它可能會在稍後導致問題。 下面是一個會導致問題的例子。

void functionX(); 

namespace mynamespace { 
    void functionX(); 
}; 

我建議前綴來代替,如

mynamespace::functionX(); 
functionX(); 

H個

相關問題