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

FSA

Community-Fossil

  • Private Nachricht senden

11

22.11.2013, 20:19

Um nett zu sein: So müsste dann dein Code aussehen

C-/C++-Quelltext

1
TTF_RenderText_Solid(..., yourString.c_str(), ...);

Zitat

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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

22.11.2013, 22:16

Vorsagen bringt keinen Lerneffekt.
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]

Copax

Frischling

  • »Copax« ist der Autor dieses Themas

Beiträge: 17

Beruf: Fachinformatiker

  • Private Nachricht senden

13

30.11.2013, 18:34



FSA hat doch aber die korrekte Lösung als Antwort geschrieben!
Bei mir hat es aber immer einen Fehler angezeigt... bin auch noch nicht so lange bei C bzw. C++ und kann somit nicht gleich mit den Fehlern etwas anfangen.
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt."



Albert Einstein

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

14

30.11.2013, 19:22

Aber Google und die meisten User hier können etwas mit C++-Fehlermeldungen anfangen.

Gelöschter Benutzer

unregistriert

15

07.12.2013, 17:29

naja, ich muss jetzt doch nochmal ne Fehlermeldung melden ^^ ich habe das vorherige Beispiel genommen, aber ein Quelltext sagt mehr als 1000 Worte:
Header-Datei

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
    string convertInt(int number);
    TTF_Font *m_font;           // Font-Datei
private:
};
#endif

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

using namespace std;

//Konstruktor
CFont::CFont()
{
...
}

//Destruktor
CFont::~CFont()
{
 ...
}//Desktruktor

//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
string convertInt(int number)
{
   stringstream ss;
   ss << number;
   return ss.str();
}

Hier bekomme ich sogar 3 Fehlermeldungen: 1)"error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'convertInt'" 2)"error C2228: Links von ".c_str" muss sich eine Klasse/Struktur/Union befinden." 3)"error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt."
Wahrscheinlich ist es von mir wieder irgendein Anfänger-Fehler, allerdings arbeite ich jetzt das erste mal mit strings. ich bedanke mich schonmal für eure Hilfe :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

07.12.2013, 17:37

1) Du hast die Definition von convertInt nicht der Klasse zugeordnet für die es deklariert wurde.
2) Wenn Du eine freie Funktion nutzen wollen würdest, muss diese vor ihrer Verwendung deklariert werden (also ein paar Zeilen weiter oben über der Stelle, die es aufrufen will).
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

17

07.12.2013, 18:11

wenn ich jetzt in meinem vorigen Beispiel in Zeile 36 schreibe: string CFont::convertInt(int number) kommen sogar 5 fehler :) ich schreibe sie mal hierrein:
1)error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'convertInt'
2)error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
3)error C2228: Links von ".c_str" muss sich eine Klasse/Struktur/Union befinden.
4)error C2556: 'std::string CFont::convertInt(int)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'int CFont::convertInt(int)'
5)error C2371: 'CFont::convertInt': Neudefinition; unterschiedliche Basistypen
Was ich aus den Fehlern herausgeholt habe, ist das es anscheinend eine Überladung gibt, aber warum? oder wie kann ich es ändern?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

07.12.2013, 18:21

4)error C2556: 'std::string CFont::convertInt(int)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'int CFont::convertInt(int)'

Was sagt Dir das?
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]

19

07.12.2013, 18:54

4) ist eine Folge von 2). Das zeigt aber, dass der Fehler im Header liegt ;)
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

07.12.2013, 18:58

Klar. Mir sagt das, dass er seine Deklaration mit der Definition vergleichen muss. Und mir sagt das auch, dass "using namespace std;" immer wieder zu Fehlern bei Anfängern führt.
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]

Werbeanzeige