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

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

1

25.07.2015, 09:15

[C++ | SFML] Fehler beim Wechsel zweier Gamestates

Hallo Leute,

ihr hört nun erneut von mir. Bei meinem Spiel möchte ich nun ein Menü implementieren (Hauptmenü, eigentliches Spiel). Hier der Code:

Main.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "core\include\Game.hpp"

int main()
{
    Game game;

    game.changeState(Game::MAINMENU);

    while (game.isRunning())
    {
        game.Run();
    }

    return 0;
}


Game.hpp:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef GAME_HPP
#define GAME_HPP

#include <SFML\Graphics.hpp>
#include <iostream>
#include <memory>

#include "gamestate\include\Gamestate.hpp"
#include "gamestate\menu\include\MainMenuState.hpp"

class Game
{
public:
    Game();
    ~Game();

    enum gameStates { MAINMENU, PLAY };

    void Run();
    void changeState(gameStates newState);

    bool isRunning();

public:
    sf::RenderWindow window;

    bool mRunning;

private:
    void loadFont();
    void loadGraphics();
    void loadSnd();
    void loadMsc();

    void Update();
    void ProcessEvents();
    void Render();

private:
    sf::Event event;

    sf::Font font;
    sf::Text mStartText;

    std::unique_ptr<Gamestate> CurrentState;

};

#endif


Game.cpp:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "include\Game.hpp"

// Konstruktor
//
Game::Game()
    : window(sf::VideoMode(1080, 720), "Space Jumper", sf::Style::Close)
{
    loadFont();
    loadGraphics();
    loadMsc();
    loadSnd();

    mRunning = true;

}

Game::~Game()
{
    mRunning = false;
    
}

void Game::loadFont()
{
}

void Game::loadGraphics()
{

}

void Game::loadSnd()
{

}

void Game::loadMsc()
{

}

void Game::Update()
{

}

void Game::ProcessEvents()
{
    while (window.pollEvent(event))
    {
        if (event.type == sf::Event::Closed || sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            window.close();

    }

}

void Game::Render()
{
    window.clear(sf::Color(0, 134, 769));

    window.display();
}

void Game::Run()
{
    while (window.isOpen())
    {
        CurrentState->ProcessEvents(*this);
        CurrentState->Update(*this);
        CurrentState->Render(*this);

    }

}


Gamestate.hpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef GAMESTATE_HPP
#define GAMESTATE_HPP

class Game;

class Gamestate
{
public:
    virtual void ProcessEvents(Game& game) = 0;
    virtual void Update(Game& game) = 0;
    virtual void Render(Game& game) = 0;
    virtual      ~Gamestate() {};

};

#endif


Hier die Fehlermeldungen:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __cdecl Game::changeState(enum Game::gameStates)" (?changeState@Game@@QEAAXW4gameStates@1@@Z)" in Funktion "main".

Fehler 2 error LNK2001: Nicht aufgelöstes externes Symbol ""public: void __cdecl Game::changeState(enum Game::gameStates)" (?changeState@Game@@QEAAXW4gameStates@1@@Z)".

Fehler 3 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: bool __cdecl Game::isRunning(void)" (?isRunning@Game@@QEAA_NXZ)" in Funktion "main".

Vielen Dank im Voraus :) ... und dafür, dass ihr euch durch den Code kämpft...

2

25.07.2015, 09:28

Vielleicht solltest du auch dein Methoden in der game.cpp einarbeiten!
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Hello_Kitty!

unregistriert

3

25.07.2015, 09:30

Du hast die betreffenden Methoden nicht implementiert und deshalb kann der Linker die Symbole auch nicht finden... siehe z.B. hier für den Unterschied zwischen einer Deklaration und Definition.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

4

25.07.2015, 09:56

Oh Danke. Wie konnte ich nur so blöd sein :dash: :dash: :dash:

5

25.07.2015, 13:35

Lies dir einfach die Fehlermeldungen durch.

MfG
Check

Werbeanzeige