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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

14.02.2008, 21:59

Zitat von »"rewb0rn"«

@Fred man sollte auch soweit möglich auf Makros verzichten, da sie meist kaum zu debuggen sind.


Was soll hier denn das Debuggen erschweren?
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

12

15.02.2008, 01:40

Ich weiß du diskutierst gerne um nichts, aber wir beide wissen, dass Makros gerne Fehler bergen, die nur schwer zu finden sind. Auf eine Grundlagendiskussion will mich daher nur einlassen, wenn du doch anderer Meinung sein solltest, die unabhängig davon ist, ob man Fehler finden nun debuggen nennt oder nicht.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

15.02.2008, 09:28

Zitat von »"rewb0rn"«

Ich weiß du diskutierst gerne um nichts


Danke, danke!

Zitat von »"rewb0rn"«


aber wir beide wissen, dass Makros gerne Fehler bergen, die nur schwer zu finden sind. Auf eine Grundlagendiskussion will mich daher nur einlassen, wenn du doch anderer Meinung sein solltest, die unabhängig davon ist, ob man Fehler finden nun debuggen nennt oder nicht.


Alles was mich stört ist dieses "nachgeschwätze" von Dingen, die irgendjemand mal gesagt hat. Grundsätzlich weiß ich was du meinst, und stimme dir auch zu. Allerdings gibt es, wie überall (sei es das Singletonpattern, globale Variablen, Makros oder sonstwas), Ausnahmen. Und genau hier ist so ein Fall!
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

14

15.02.2008, 12:57

Ich habe ja auch nicht gesagt, dass das hier ein Problem darstellt, sondern soweit wie möglich vermieden werden sollte. Es spricht gar nichts dagegen, in diesem Fall einfach Konstanten zu verwenden und Nelrim sollte sich gar nicht erst angewöhnen einfach alles mit #define zu machen.

Nelrim

Frischling

  • »Nelrim« ist der Autor dieses Themas

Beiträge: 33

Beruf: Entwicklungskonstrukteur

  • Private Nachricht senden

15

15.02.2008, 14:04

Zitat von »"rewb0rn"«

Ich habe ja auch nicht gesagt, dass das hier ein Problem darstellt, sondern soweit wie möglich vermieden werden sollte. Es spricht gar nichts dagegen, in diesem Fall einfach Konstanten zu verwenden und Nelrim sollte sich gar nicht erst angewöhnen einfach alles mit #define zu machen.


also ihr müsst euch nicht streiten! :) lieben dank für die Hilfe, ich wills ja richtig lernen weil ein gesundes Fundament bei allem wichtig ist.

Zum Beispiel kotzt es mich an das ich mir jetzt diesen

C-/C++-Quelltext

1
using namespace = std;
angewöhnt habe.

Ich mach das Zeug das ich zur Zeit programmiere ja eh nur zu Übungszwecken und um das Verständnis zu bekommen, nicht weil das alles für die kleinen Beispiele sinnvoll ist.

Das ist auch ein kleiner Nachteil im Buch, dort wird oft der Einfachheit halber irgendwas anders gemacht als man eigentlich sollte - das momentane Ergebnis ist das ich mir schwer tue Meine Projekte sinnvoll aufzuschlüsseln... Schreibt ihr für jede größere Funktion ne eigene .cpp und included die dann? Mir ist unklar ab wann bzw wie man sein Programm sinnvoll zerpflückt. (aber das nur am Rande)

Neugierig geworden bin ich auf das was Fred geschrieben hat mit eigene Klasse oder Struktur anlegen... warum denn nicht? Ist vielleicht total overkill hier aber hilft mir doch sicher beim Lernen für später.

Zitat von »"Fred"«

Es mag sein, dass globale Variablen nicht immer sinnvoll sind. Diese jedoch halte ich für einigermaßen tragbar. Bevor hier irgendjemand sagt: "Pack die Variablen in einen Namespace oder in eine Klasse oder struktur."


Ätzend das ich heut so lange arbeiten muß, würd viel lieber proggen hihi.

winke

Nelrim
Auch der längste Weg beginnt mit einem ersten Schritt.

16

15.02.2008, 16:12

? using namespace = std? naja using namespace std; wäre hier eher das was du willst ... das andere sollte was anderes machen (da ich mir aber nicht 100% sicher bin, dass es da einen unbenannten namespace = std anlegt und diesen dann used ...)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Nelrim

Frischling

  • »Nelrim« ist der Autor dieses Themas

Beiträge: 33

Beruf: Entwicklungskonstrukteur

  • Private Nachricht senden

17

15.02.2008, 20:54

Zitat von »"Deviloper"«

? using namespace = std? naja using namespace std; wäre hier eher das was du willst ... das andere sollte was anderes machen (da ich mir aber nicht 100% sicher bin, dass es da einen unbenannten namespace = std anlegt und diesen dann used ...)


ich meinte eher, das ich mich ärgere das ich mir das jetzt schon so angewöhnt habe obwohl es viele für schlecht halten... (?)

und prompt bekomm ich auch Probleme damit:

mein miniSpiel wächst und ich habe jetzt mal probehalber ne Klasse angelegt. die hab ich dann auch includiert:

C-/C++-Quelltext

1
2
3
4
5
#include <iostream> 
#include "Spieler.h"

using namespace std; 
...


jetzt motzt der Compiler:

Zitat

error C2143: Syntaxfehler: Es fehlt ';' vor 'using'


die headerdatei "Spieler.h" sieht so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
// Klasse für Spieler

class CSpieler
 {
public:
    //Membervariablen

    char m_Name[30];
    int m_Snoffel;
    int m_Punkte;
    //Memberfunktionen


    void mf_BerechnePunkte();
} /*NICHT VERGESSEN:*/ ; //SEMIKOLON!


EDIT: never mind, hab grad gesehen das man hinter ner Klassendeklaration der geschweiften Klammer ein Semikolon machen muß... schon gehts...
Auch der längste Weg beginnt mit einem ersten Schritt.

Nelrim

Frischling

  • »Nelrim« ist der Autor dieses Themas

Beiträge: 33

Beruf: Entwicklungskonstrukteur

  • Private Nachricht senden

18

17.02.2008, 12:21

Hallo mal wieder Leute,

ich hab mal wieder Probleme mit Zeigern bzw. bekomm da was nicht hin.

Ich hab die Forensuche und Google benutzt, aber da werd ich mit Treffern erschlagen die alle sehr weit weg sind von dem was ich suche.

(Schade das man in der Forensuche nicht nur nach dem Titel filtern kann).

Egal, ich häng das Problem da es wieder mit Zeigern zu tun hat einfach an diesen Thread.

Also, ich bin dabei ein kleines Würfelspiel zu schreiben.
Die Würfel sind eine Klasse:

class CWuerfel

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
{
public:
    // Membervariablen


    int m_Wuerfelnummer;
    int m_Wuerfelwert;

    // Memberfunktionen


    void mf_Zeichnewuerfel ();
};


dann hab ich 5 Instanzen für die 5 Würfel erschaffen und wollte die jetzt in eine Struktur packen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
    struct S_AlleWuerfel
    {
        CWuerfel Wuerfel1;
        CWuerfel Wuerfel2;
        CWuerfel Wuerfel3;
        CWuerfel Wuerfel4;
        CWuerfel Wuerfel5;
        
    };


diese Struktur wollte ich per Zeiger weiterreichen an irgendwelche Funktionen. Also dachte ich, ok mach ich wie ichs gelernt habe:

C-/C++-Quelltext

1
struct *pS_AlleWuerfel = NULL; // Zeiger auf die Struktur der Würfel


und danach:

C-/C++-Quelltext

1
pS_AlleWuerfel = &S_AlleWuerfel;


der Compiler motzt rum und sagt was von fehlendem tagnamen.

Zitat

error C2332: 'struct': Fehlender Tagname


also hab ich mal frech tagname davor geschrieben:

C-/C++-Quelltext

1
struct tagname *pS_AlleWuerfel = NULL; // Zeiger auf die Struktur der Würfel


trotzdem komm ich damit nicht weiter und der compiler sagt:

Zitat

: error C2275: 'main::S_AlleWuerfel': Ungültige Verwendung dieses Typs als Ausdruck


Kann mir jemand sagen wie es richtig geht? ;)

vielen dank.

Nelrim

PS: wenn jemand mit Gedul Lust hat mich auf seine MSN Liste zu nehmen für spontane Fragen Nelrim@live.de :) würde mich freuen.
Auch der längste Weg beginnt mit einem ersten Schritt.

neido

Treue Seele

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

19

17.02.2008, 12:41

S_AlleWuerfel ist keine Struktur sondern nur ein Strukturtyp oder wie man das auch immer nennt :? Die enthält weder Werte noch hat sie eine Adresse im Arbeitsspeicher

Du musst erst eine neue Instanz erstellen mit

C-/C++-Quelltext

1
S_AlleWuerfel StrukturDieAlleWuerfelEnthältUndAufDieIchJetzEinenPointerMachenKann;
oder so ähnlich ;)

Ich hoffe ich habe nicht die Vokabel durcheinandergebracht, die sind meine Schwachstelle :roll:

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

20

17.02.2008, 14:09

Wenn wir schon mal bei langen Variablennamen sind würd ich eher schreiben StrukturobjektDasFuenfWuerfelobjekteEnthaeltUndAufDasIchJetztEinenPointerErstellenKann
:)

Werbeanzeige