C++:"error C4430: missing type specifier - int assumed" 对于构造函数和无效声明



我有这个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;
    };

我做错了什么?

添加减速前的代码

你忘了#include <set>

编辑后

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

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

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

应该是这样的:

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

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

我认为你只需要:

using namespace std;

通常使用"using namespace xxx;"是一个坏主意。以后可能会出问题。下面是一个将导致问题的示例。

void functionX();
namespace mynamespace { 
  void functionX();
};

我建议使用前缀代替,例如

mynamespace::functionX();
functionX();

Hth

最新更新