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

Gelöschter Benutzer

unregistriert

21

07.12.2013, 19:12

macht es doch bitte nicht so spannend :D ich finde den fehler einfach nicht

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

22

07.12.2013, 19:29

std::string
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Gelöschter Benutzer

unregistriert

23

07.12.2013, 20:13

wo fehlt mir jetzt noch das std::? ein paar habe ich schon ergänzt:
hpp

C-/C++-Quelltext

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

#include <SDL_ttf.h>
#include <sstream>

class CFont
{
public:
    CFont();
    ~CFont();
    void zeichneText(char cText[], int xPos, int yPos, int R, int G, int B);   //zu schreibender Text, x-Pos, y-Pos, R, G, B
    void zeichneVariable(int number, int xPos, int yPos, int R, int G, int B); //zu schreibende Nummer, x-Pos, y-Pos, R, G, B
    std::string convertInt(int number);
    TTF_Font *m_font;           // Font-Datei
private:
};
#endif

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 <iostream>
#include <SDL_ttf.h>
#include <sstream>
#include "Font.hpp"
#include "Framework.hpp"

//Konstruktor
CFont::CFont()
{
    //Initialisierung: SDL_ttf
    if(TTF_Init() == -1 )
    {
        std::cout << "SDL_ttf konnte nicht initialisiert werden!" << std::endl;
        std::cout << "Fehlermeldung:"<< SDL_GetError() << std::endl;
    }
    //Schriftart laden
    m_font = nullptr;
    m_font = TTF_OpenFont("Data\\FreeSans.ttf", 30);
    if(!m_font)
    {
       std::cout << "Konnte Schriftart nicht laden!" << std::endl;
       std::cout << "Fehlermeldung: " << TTF_GetError() << std::endl;
    }
}

//Destruktor
CFont::~CFont()
{
    // free the font
    // TTF_Font *m_font;
    TTF_CloseFont(m_font);
    m_font = NULL; // to be safe...
}//Desktruktor

//zeichneText: Text auf das Surface schreiben
void CFont::zeichneText(char cText[], int xPos, int yPos, int R, int G, int B) //zu schreibender Text, x-Pos, y-Pos, R, G, B)
{
    
    SDL_Color textColor = {R, G, B};
    SDL_Surface *NewText;
    NewText = TTF_RenderText_Solid (m_font, cText, textColor);
    // [nach dem Zeichnen des Pinguins] Den Text ausgeben.
    SDL_Rect textPosition;
    textPosition.x = xPos;
    textPosition.y = yPos;
    SDL_BlitSurface(NewText, 0, g_pFramework->GetScreen (), &textPosition);
    SDL_FreeSurface(NewText);
}//zeichneText

//zeichneNummer: Nummer auf das Surface schreiben
void CFont::zeichneVariable(int Nummer, int xPos, int yPos, int R, int G, int B) //zu schreibende Nummer, x-Pos, y-Pos, R, G, B)
{
    SDL_Color textColor = {R, G, B};
    SDL_Surface *NewText;
    NewText = TTF_RenderText_Solid (m_font, convertInt(Nummer).c_str, textColor);
    // [nach dem Zeichnen des Pinguins] Den Text ausgeben.
    SDL_Rect textPosition;
    textPosition.x = xPos;
    textPosition.y = yPos;
    SDL_BlitSurface(NewText, 0, g_pFramework->GetScreen (), &textPosition);
    SDL_FreeSurface(NewText);
}//zeichneText

//convertInt: int in string umwandeln
std::string CFont::convertInt(int number)
{
   std::stringstream ss;
   ss << number;
   return ss.str();
}

Immerhin kommt jetzt nur noch diese Fehlermeldung: "error C3867: "std::basic_string<_Elem,_Traits,_Alloc>::c_str": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&std::basic_string<_Elem,_Traits,_Alloc>::c_str", um einen Zeiger auf den Member zu erstellen.
".

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

24

07.12.2013, 21:02

NewText = TTF_RenderText_Solid (m_font, convertInt(Nummer).c_str, textColor);
"c_str" ist eine Methode, keine Property. Also fehlt da was.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Gelöschter Benutzer

unregistriert

25

07.12.2013, 22:46

Was fehlt ?( Ich habe sogar Bing durchforstet, aber weil ich leider keine konkreten Stichwörter habe, die mein Problem genau schildern, könnte ich leider nichts finden.

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

26

07.12.2013, 23:12

".c_str" im Quelltext und der Hinweis "c_str ist eine Methode" sollte doch ausreichen...
>Die Klammern fehlen, das ist ein Methodenaufruf, keine Membervariable

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

27

07.12.2013, 23:13

Guck dir das Beispiel hier genau an: http://www.cplusplus.com/reference/string/string/c_str/
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Gelöschter Benutzer

unregistriert

28

08.12.2013, 10:49

Wenn ich ehrlich bin, muss ich sagen, dass ich keinen Plan habe :hmm:

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

29

08.12.2013, 10:51

.c_str vs .c_str()
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Gelöschter Benutzer

unregistriert

30

08.12.2013, 12:05

danke, jetzt gehts :D

Werbeanzeige