Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

24.08.2013, 17:17

[Gelöst] [C++] [C2653] Implementierung findet beim kompilieren die Headerdatei nicht

Hallo,
ich habe eine .h-Datei und eine .cpp-Datei. die .cpp-Datei inkludiert die .h-Datei.

.h:

C-/C++-Quelltext

1
2
3
4
5
6
7
#ifndef WASDENGINE_H_#define WASDENGINE_H_
#include <string>
namespace wasd{ class wasdGraphics;
    class wasdEngine    {   public:     wasdEngine(GraphicsInput gi);       ~wasdEngine();
        void RenderFrame();
    private:        wasdGraphics* graphics; };}
#endif


.cpp

C-/C++-Quelltext

1
2
3
4
#include "..\shared\wasdEngine.h"#include "Declarations.h"#include "Structs.h"#include "wasdGraphics.h"
using namespace wasd;
wasdEngine::wasdEngine(GraphicsInput gi){   graphics = new wasdGraphics(gi);}
wasdEngine::~wasdEngine(){  delete graphics;}


Die Pfade stimmen, da ich sie mit Hilfe von Visual studio gesetzt habe (beim Include).

Trotzdem bekomme ich den Fehler

C-/C++-Quelltext

1
 error C2653: 'wasdEngine': Keine Klasse oder Namespace


Weiß da jemand was?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SuperManitu« (27.08.2013, 19:18)


Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

24.08.2013, 17:52

Edit: Hier stand eine falsche Vermutung

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tobiking« (27.08.2013, 20:11)


3

24.08.2013, 18:11

Ich habs ausprobiert funktioniert nicht.

EDIT: bei einer älteren Version des Programms hatte es mit "using" auch funktioniert.

4

27.08.2013, 17:17

Weiß keiner was?

FSA

Community-Fossil

  • Private Nachricht senden

5

27.08.2013, 17:54

Poste mal bitte den kompletten Quellcode, der betroffen ist und formatiere ihn richtig. (Quellcodetab war das?)
So lese ich das bestimmt nicht.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

6

27.08.2013, 18:00

Das ist ja das Problem, sobald ich Versuche, den Quellcode zu Formatieren, ist beim abspeichern wieder alles so wie da, trotz cpp-Tags.

.h:

(Link)



.cpp:

(Link)



Edit: Ich habe Thumbnails gemacht und die Hochgeladen.

7

27.08.2013, 18:12

Von Editor auf Quellcode wechseln, dann wirds auch korrekt formatiert.

(Link)


MfG
Check

8

27.08.2013, 18:17

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef WASDENGINE_H_
#define WASDENGINE_H_

namespace wasd
{
    class wasdGraphics;

    class wasdEngine
    {
    public:
        wasdEngine(GraphicsInput gi);
        ~wasdEngine();

        void RenderFrame();

    private:
        wasdGraphics* graphics;
    };
}

#endif


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "..\shared\wasdEngine.h"
#include "Declarations.h"
#include "Structs.h"
#include "wasdGraphics.h"

using namespace wasd;

wasdEngine::wasdEngine(GraphicsInput gi)
{
    graphics = new wasdGraphics(gi);
}

wasdEngine::~wasdEngine()
{
    delete graphics;
}


Danke jetzt gehts.

EDIT: Die Formatierung, nicht das Programm.

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

9

27.08.2013, 18:45

Also ich habe das jetzt mal so nachgebaut, die GraphicsInput Klasse und die wasdGraphics haben zwar weiter keine funktionalität bei mir aber es lässt sich alles kompilieren.

Ich würde deine includes in der Header Datei setzen, so habe ich es gemacht.

Also so bei deiner wasdEngine Klasse:

wasdEngine.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef WASDENGINE_H_
#define WASDENGINE_H_

#include "Declarations.h"
#include "Structs.h"
#include "wasdGraphics.h"

namespace wasd
{ 
    class wasdGraphics;
    
    class wasdEngine 
    {   
        public:     
            wasdEngine(GraphicsInput gi);       
            ~wasdEngine();
            
            void RenderFrame();

        private:       
            wasdGraphics* graphics; };
}
#endif


wasdEngine.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "..\shared\wasdEngine.h"

using namespace wasd;

wasdEngine::wasdEngine(GraphicsInput gi)
{
    graphics = new wasdGraphics(gi);
}


wasdEngine::~wasdEngine(void)
{
    delete graphics;
}


Die Klasse GraphicsInput musst du nicht includen da du Sie ja wahrscheinlich schon in der wasdGraphics Klasse includet hast.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »storage« (27.08.2013, 18:58)


10

27.08.2013, 19:17

Graphics Input ist einfach eine Struktur, die die nötigen Daten enthält.

>aber es lässt sich alles kompilieren.

Das hat mich auch gewundert, da ich eigentlich den Quellcode aus einem vorherigen Projekt kopiert habe und nur ein bisschen Umbennannt habe.

Ich glaube ich hab den Fehler gefunden (keine Ahnung ob es daran lag).
Ich hatte Declarations.h als Vorkompilierter Header (zum erstellen) eingestellt (hatte ich im Vorgängerprojekt zwar auch, aber wer weiß...).

Werbeanzeige