Fehlermeldung bei Visual C



  • class CGraphic * gx" (?gx@@3PAVCGraphic@@A) bereits in main.obj definiert

    diese Meldung bekomme ich. Doch in der Datei main.h und main.cpp ist die Klasse 100% nicht definiert. Warum schreibt er das dann?

    Codausschnitt:
    Datei main.h

    #ifndef MAIN_H
    #define MAIN_H
    .
    .
    .
    
    #include "util.h"
    

    Datei util.h

    #ifndef UTIL_H
    #define UTIL_H
    .
    .
    .
    CGraphic *gx;
    


  • Lorenzo2 schrieb:

    diese Meldung bekomme ich. Doch in der Datei main.h und main.cpp ist die Klasse 100% nicht definiert. Warum schreibt er das dann?

    Weil du dich irrst. Überprüfe nochmal alles genau!

    Bye, TGGC



  • Das Programm ist sehr klein. So kleine das ich 100% nichts übersehen habe.

    Vielleicht liegt es daran das ich alles in verschiedene Ordner Speichere.
    Der Arbeitsbereich sieht so aus:

    GAME
       |_MAIN
       |    |_main.cpp
       |    |_main.h
       |
       |_ENGINE
              |_UTIL
              |    |_util.cpp
              |    |_util.h
              |
              |_BASIS
                    |_graphic.cpp
                    |_graphic.h
    

    In der Datei main.cpp ist die WinMain Funktion.
    In der Datei util.cpp sind ein paar Hilfsfunktionen
    In der Datei graphic.cpp ist alles was mit Grafikausgabe zu tun hat.

    main.cpp

    #include"main.h"
    
    int 
    WINAPI WinMain(	HINSTANCE hinst,HINSTANCE hprevinst,LPSTR lpcmdline,int ncmdshow)
    .
    .
    .
    

    main.h

    #ifndef MAIN_H
    #define MAIN_H
    .
    .
    .
    #include <windows.h>
    #include "graphic.h"
    #include "util.h"
    

    graphic.cpp

    #ifndef GRAPHIC_CPP
    #define GRAPHIC_CPP
    
    #include"graphic.h"
    
    CGraphic::CGraphic()
    .
    .
    .
    

    graphic.h

    #ifndef GRAPHIC_H
    #define GRAPHIC_H
    
    #define DIRECTDRAW_VERSION   0x0700
    
    #pragma comment(lib,"dxguid.lib")
    #pragma comment(lib,"ddraw.lib")
    
    #include <ddraw.h>
    
    class CGraphic
    {
    private:
    .
    .
    .
    

    util.cpp

    #ifndef UTIL_CPP
    #define UTIL_CPP
    
    #include"Util.h"
    .
    .
    .
    

    util.h

    #ifndef UTIL_H
    #define UTIL_H
    
    #include <math.h>
    #include "graphic.h"
    
    CGraphic *gx; //So geht es nicht!
    //extern CGraphic *gx -->so geht es. Dazu muss ich aber in main.h CGraphic *gx
    //definieren.
    .
    .
    .
    

    Ich muss jede Variable in main.h definieren. Das Programm akzeptiert keine globalen Defination in anderen Dateien

    😕



  • Kein Tipp für mich? 😞



  • Im Header werden keine Variablen definiert, nur mittels extern deklariert, also lediglich bekannt gemacht.

    Die eigentliche Definition darf es nur einmal in einer cpp-Datei geben.



  • 👍 Danke



  • Hallo, jetzt habe ich Probleme wenn ich Funktionen als inline deklariere.



  • Wenn inline muss die Funktion bei der Verwendung ganz bekannt sein, muss also leider komplett im Header stehen.


Anmelden zum Antworten