我有一个非常奇怪的问题。
在我的标题“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,&amp; 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);
};
在compiler.h中我说过
#include "structures.h"
我是否忽略了一个错字,还是更严重?
感谢您的帮助。
答案 0 :(得分:0)
#include "structures.h"
必须将添加到cpp和h文件中。