2016-04-09 4 views
-1

Ich möchte eine DLL mit Visual Studio 2015 erstellen. Ich habe ein Projekt dafür erstellt. Ich habe angefangen, Klassen hinzuzufügen, und jetzt habe ich über tausend Fehler bei der Kompilierung. Es sieht so aus, als hätte ich Konflikte mit C-Typ auf niedriger Ebene und C++ selbst? HierDas erste Mal versucht, eine DLL mit vielen Klassen zu erstellen, gebündelt in einem

ist der Code: 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) 

Ich verwende die precompile Header, sollte ich? Ich könnte einige Anweisungen dazu verwenden, wie es möglich wäre, das zu beheben.

Antwort

1

Ihre Include-Anweisungen stimmen nicht.

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> 

In CharacterBio.h Sie Arten von <cstdint> verwenden, aber Sie sind nicht in diesem Header Datei. Die Header-Datei sollte alles enthalten, was sie verwendet, oder zumindest Vorwärtsdeklarationen für geeignete Typen haben.

Auch wenn Sie umfassen CharacterBio.h von CharacterBio.cpp, #include <cstdint> kommt nach #include "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 *); 
}; 

Das gleiche gilt für den Rest des Codes - nur sehr wenige Header-Dateien enthalten, was bei:


Der geeignete Weg, um die CharacterBio.h Datei würde zu schreiben sein alle!

+0

Oh ich sehe, erstaunlich! Wenn ich mir die GDCFile.h ansehe, muss ich dann auch alle Klassen weiterleiten? –

+0

In diesem Fall werden Vorwärtsdeklarationen nicht ausgeführt, da die Klassen wie 'Header' von Wert verwendet werden (als Mitglieder der GCDFile-Klasse). Vorwärtsdeklarationen sind in Ordnung, wenn Sie Zeiger oder Referenzen verwenden (und diese nicht dereferenzieren). –

+0

Was wäre die beste Option, um sie in Zeiger zu verwandeln? oder behalte es so wie es ist? –

Verwandte Themen