C ++:“错误C4430:缺少类型说明符 - 假设为int”对于构造函数和析构函数的无效声明

时间:2013-03-25 08:32:22

标签: c++ windows class constructor destructor

我有这个CResources类声明, 我收到此错误

  

“错误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;
    };

我做错了什么?

在减速前添加代码。

4 个答案:

答案 0 :(得分:3)

你忘了#include <set>

编辑后

在第18行:CBuffer apiBuffer;,标识符CBuffer未知。 此外,typedef上的typedef struct _resourcesMapping会被忽略,因为您没有声明任何内容。

此外,以下划线开头的标识符在全局命名空间中保留,不应使用_resourcesMapping

答案 1 :(得分:1)

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

应该是这样的:

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

除此之外,我认为没有任何错误。您的错误似乎在其他地方。

答案 2 :(得分:0)

我认为你只需要:

using namespace std;

无论如何它帮助了我。

答案 3 :(得分:0)

一般使用“using namespace xxx;”是个坏主意。它可能会在以后引起问题。 它将导致问题的一个例子如下所示。

void functionX();

namespace mynamespace { 
  void functionX();
};

我建议使用前缀,例如

mynamespace::functionX();
functionX();

H个