C++:语法错误C2061:标识符

C++: Syntax error C2061: Identifier

本文关键字:标识符 C2061 语法 C++ 错误      更新时间:2023-10-16

我有一个非常奇怪的问题。

在我的标题"compier.h"中,我有以下原型:

void WriteMap(FILE *outfile,clsMapping &uMap);

在cpp中,我这样声明:

void CCompiler::WriteMap(FILE *outfile,clsMapping &uMap)
{
    int iSize = uMap.Content().size();
    fwrite(&iSize,sizeof(int),1,outfile);
    int iOffset=uMap.iOffset;
    fwrite(&iOffset,sizeof(int),1,outfile);
    vector<udtMapping>::iterator it = uMap.Content().begin();
    int n = 0;
    for (;it != uMap.Content().end(); ++it)
    {
        fwrite( &it->ByteStart, sizeof(int), 1, outfile);
        fwrite( &it->ByteCount, sizeof(int), 1, outfile);
    }   
}

编译器告诉我"语法错误C2061:标识符'clsMapping'。它告诉我:

声明与"void CCompiler::WriteMap(FILE*outfile,&uMap("(在"m:\app\compiler.h"的第30行声明(不兼容。

clsMapping在标头"structures.h"中声明:

class clsMapping
{
private:
    vector<udtMapping> m_content;
protected:
public:
    vector<udtMapping> &Content();
    void Add(int i1, int i2);
    int iOffset;
    void FeedFeaturesFromMap(udtFeatures &uFeatures,int uIndex);
};

在编译器.h中,我已经说明了

#include "structures.h"

我是忽略了一个打字错误,还是更严重的问题?

谢谢你的帮助。

#include "structures.h"

必须同时添加到cpp和h文件中。