1

私は本当に奇妙な問題を抱えています。

私のヘッダー「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);
};

compiler.h で私は述べました

#include "structures.h"

タイプミスを見落としましたか、それとももっと深刻な問題ですか?

お手伝いありがとう。

4

1 に答える 1

0
#include "structures.h"

cpp と h ファイルの両方に追加する必要があります。

于 2013-05-06T11:32:20.057 に答える