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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

26.12.2015, 20:56

Ja, entweder so oder in der Initialisierungsliste des Konstruktors.

22

26.12.2015, 23:55

So habe die Ball.hpp und .cpp fertig aber ich weiß nicht wie ich die Instanz erstellen soll ist das so richtig ? :o

Oder eher in denn Framework Konstruktor ?

Framework.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
#pragma once

#include <SFML\Graphics.hpp>

#include "Ball.hpp"

using namespace sf;
using namespace std;

class CFramework {

public:
    CFramework              (int WindowWidth, int WindowHeight, string Title);

    void Run                ();

private:
    void Update             (float ElapsedTime);
    void Render             ();
    void HandleEvents       ();
    void Quit               ();

    float GetElapsedTime    ();

    RenderWindow            Window;
    Event                   Event;
    Clock                   Clock;

    CBall                   Ball(string("Assets/Ball.png"), Vector2f(400, 300));

    float                   ElapsedTime;
    bool                    Running;

};

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

23

27.12.2015, 00:00

Um, nein. Was du suchst, ist die Initialisierungsliste im Konstruktor. Ich kann dir wirklich nur empfehlen, ein gutes C++ Grundlagenbuch zu lesen...

24

27.12.2015, 00:12

Ok... Ja ich habe bis jetzt das Buch von Heiko Kalista(C++ Für Spieleprogrammierer) durchgelesen. Sind da eigentlich genug informationen über die Grundlagen von C++ drin ? :o

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »N4SONIC« (27.12.2015, 00:25)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

27.12.2015, 00:25

Ich hab das Buch selbst nicht gelesen, aber ich würde mal schwer hoffen, dass so Dinge wie Member, Konstruktoren und Initialisierungsliste dort erklärt sind... ;)

Wie dem auch sei: Bevor der Body eines Konstrukturs (das, was zwischen den {} steht) ausgeführt wird, werden die einzelnen Member der Klasse initialisiert. Je nachdem, was für einen Typ ein Member hat, wird im Zuge dessen beispielsweise ein entsprechender Konstruktor aufgerufen. Wenn du für einen Member nicht explizit den Konstruktor aufrufst, wird einfach der Default-Konstruktor aufgerufen (wenn ein solcher nicht existiert, gibt's einen Compilerfehler). Die Initialisierung eines Members per explizitem Konstruktoraufruf erledigst du in der Initialisierungsliste des jeweiligen Konstruktors der Klasse, in der der Member sich befindet. Also beispielsweise:

C-/C++-Quelltext

1
2
3
4
5
6
7
CFramework::CFramework(int WindowWidth, int WindowHeight, string Title)
  : Ball(string("Assets/Ball.png"), Vector2f(400, 300)),  // Ball initialisieren (wird den passenden Konstruktor aufrufen)
    ElapsedTime(0.0f),                                    // ElapsedTime initialisieren
    Running(false)                                        // Running initialiieren
{ // für Window, Event und Clock wurde der Default Konstruktor aufgerufen

}

26

27.12.2015, 00:39

Ahhhhh... Jetzt Checke ich es :D Ich habe das jetzt so gemacht aber es kommen jetzt 6 Errors ? ?(

Errors: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler (aktiv) Keine Instanz des Konstruktors ""sf::ContextSettings::ContextSettings"" stimmt mit der Argumentliste überein. Pong c:\Users\n4son\Dropbox\Programming\SFML-2.3.2\include\SFML\Graphics\RenderWindow.hpp 76
Fehler (aktiv) Keine Instanz des Konstruktors ""sf::ContextSettings::ContextSettings"" stimmt mit der Argumentliste überein. Pong c:\Users\n4son\Dropbox\Programming\SFML-2.3.2\include\SFML\Graphics\RenderWindow.hpp 94
Fehler (aktiv) Keine Instanz des Konstruktors ""sf::ContextSettings::ContextSettings"" stimmt mit der Argumentliste überein. Pong c:\Users\n4son\Dropbox\Programming\SFML-2.3.2\include\SFML\Window\Window.hpp 89
Fehler (aktiv) Keine Instanz des Konstruktors ""sf::ContextSettings::ContextSettings"" stimmt mit der Argumentliste überein. Pong c:\Users\n4son\Dropbox\Programming\SFML-2.3.2\include\SFML\Window\Window.hpp 106
Fehler (aktiv) Keine Instanz des Konstruktors ""sf::ContextSettings::ContextSettings"" stimmt mit der Argumentliste überein. Pong c:\Users\n4son\Dropbox\Programming\SFML-2.3.2\include\SFML\Window\Window.hpp 133
Fehler (aktiv) Keine Instanz des Konstruktors ""sf::ContextSettings::ContextSettings"" stimmt mit der Argumentliste überein. Pong c:\Users\n4son\Dropbox\Programming\SFML-2.3.2\include\SFML\Window\Window.hpp 151

Framework.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
#include "Framework.hpp"

CFramework::CFramework(int WindowWidth, int WindowHeight, string Title) : Running(true) {

    Window.create(VideoMode(WindowWidth, WindowHeight), Title.c_str(), Style::Titlebar | Style::Close);

}

void CFramework::Run() {

    while (Running) {

        Update(ElapsedTime);
        Render();
        HandleEvents();
        Quit();
        GetElapsedTime();

    }

}

void CFramework::Update(float ElapsedTime) {

    

}

void CFramework::Render() {

    Window.clear();
    Window.display();

}

void CFramework::HandleEvents() {

    while (Window.pollEvent(Event)) {

        if (Event.type == Event::Closed) {

            Running = false;

        }

    }

}

void CFramework::Quit() {

    if (Running == false) {

        Window.close();

    }

}

float CFramework::GetElapsedTime() {

    ElapsedTime = Clock.getElapsedTime().asSeconds();
    Clock.restart();

    return ElapsedTime;

}

27

27.12.2015, 00:46

Oh habe das Problem gelöst ^^

28

27.12.2015, 01:03

Habe jetzt ein Problem mit dem Window ? ?(

Framework.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
#include "Framework.hpp"

CFramework::CFramework(int WindowWidth, int WindowHeight, string Title) : Running(true), Ball(string("Assets/Ball.png"), Vector2f(400, 300)) {

    Window.create(VideoMode(WindowWidth, WindowHeight), Title.c_str(), Style::Titlebar | Style::Close);

}

void CFramework::Run() {

    while (Running) {

        Update(ElapsedTime);
        Render();
        HandleEvents();
        Quit();
        GetElapsedTime();

    }

}

void CFramework::Update(float ElapsedTime) {

    Ball.Update(ElapsedTime);

}

void CFramework::Render() {

    Window.clear();

    Ball.Render(Window); // <--- Problem !!

    Window.display();

}

void CFramework::HandleEvents() {

    while (Window.pollEvent(Event)) {

        if (Event.type == Event::Closed) {

            Running = false;

        }

    }

}

void CFramework::Quit() {

    if (Running == false) {

        Window.close();

    }

}

float CFramework::GetElapsedTime() {

    ElapsedTime = Clock.getElapsedTime().asSeconds();
    Clock.restart();

    return ElapsedTime;

}

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

29

27.12.2015, 01:06

Aha; und um was genau für ein Problem handelt es sich?

30

27.12.2015, 01:09

Weiß ich jetzt nicht genau :( Aber bekomme diesen Error: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler C2280 "sf::RenderWindow::RenderWindow(const sf::RenderWindow &)" : Es wurde versucht, auf eine gelöschte Funktion zu verweisen Pong c:\users\n4son\dropbox\programming\c++ projekte\pong\pong\framework.cpp 33

Werbeanzeige