2016-04-09 3 views
-1

Visual Studio 2015でDLLを1つ作成したいと思います。そのためのプロジェクトを作成しました。私はクラスを追加し始めましたが、今はコンパイル時に何千ものエラーがあります。私は低レベルのC型やC++自体と競合しているようですね?ここで初めてクラスをたくさん使ってDLLを作成しようとしました。

コードです:https://github.com/Lorac/GrimDawnCharacterTrainer

characterbio.h(6): error C3646: 'level': unknown override specifier (compiling source file src\CharacterBio.cpp) 
characterbio.h(6): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (compiling source file src\CharacterBio.cpp) 
characterbio.h(7): error C3646: 'experience': unknown override specifier (compiling source file src\CharacterBio.cpp) 
characterbio.h(7): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (compiling source file src\CharacterBio.cpp) 
characterbio.h(8): error C3646: 'modifierPoints': unknown override specifier (compiling source file src\CharacterBio.cpp) 

私は、私は、プリコンパイルヘッダをすべき使用していますか?私はこれを修正する方法がいくつかの方向を使用することができます。

答えて

1

あなたのインクルードディレクティブは正しくありません。あなたは<cstdint>から型を使用していますが、そのヘッダにそれを含まないCharacterBio.hで

CharacterBio.h

#pragma once 

class CharacterBio 
{ 
public: 
    uint32_t level; 
    uint32_t experience; 
    uint32_t modifierPoints; 
    uint32_t skillPoints; 
    uint32_t devotionPoints; 
    uint32_t totalDevotion; 
    float physique; 
    float cunning; 
    float spirit; 
    float health; 
    float energy; 

    void read(GDCFile *); 
    void write(GDCFile *); 
}; 

CharacterBio.cpp

#include "pch.h" 
#include "CharacterBio.h" 
#include "GDCFile.h" 
#include "block.h" 
#include <cstdint> 

void CharacterBio::read(GDCFile *gdc) 
{ 
// <snip> 

ファイル。ヘッダーファイルには、使用するすべてのものが含まれているか、少なくとも適切な型の前方宣言が含まれている必要があります。あなたがCharacterBio.cpp#include <cstdint>からCharacterBio.hを含んでさえ

#include "CharacterBio.h"後に来ます。


CharacterBio.hファイルを書き込むための適切な方法は、次のようになります。

#pragma once 

#include <cstdint> 

class GDCFile; 

class CharacterBio 
{ 
public: 
    uint32_t level; 
    uint32_t experience; 
    uint32_t modifierPoints; 
    uint32_t skillPoints; 
    uint32_t devotionPoints; 
    uint32_t totalDevotion; 
    float physique; 
    float cunning; 
    float spirit; 
    float health; 
    float energy; 

    void read(GDCFile *); 
    void write(GDCFile *); 
}; 

同じことがあなたのコードの残りの部分のために行く - 非常に少数のヘッダファイルはで何かを含めますすべて!

+0

ああ、すごいよ!私がGDCFile.hを見ると、そこにすべてのクラスも宣言する必要がありますか? –

+0

その場合、 'Header'のようなクラスは(GCDFileクラスのメンバとして)値によって使用されるので、前方宣言は行いません。ポインタや参照を使用しているとき(そして逆参照しないとき)は、前方宣言がうまくいきます。 –

+0

ポインタに変更するのに最適なオプションは何でしょうか?またはそれをそのまま保つか? –

関連する問題