 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mat Senior JLI'ler

Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 22.12.2005, 10:21 Titel: Problem mit einem Array |
|
|
Dürfte mir zwar eigendlich nicht passieren, aber ich komm nicht ganz darauf, wesshalb die Implementation des Arrays im Konstruktor gültig ist.
CPP: | class CGameplay
{
public:
bool opm_activeFigures[NUMBER_FIGURES];
short int opm_NumActivFigures;
CGameplay(void);
...
protected:
...
};
CGameplay::CGameplay(void)
{
m_NumOccupiedLines = 0;
m_NumPreviews = 1;
opm_activeFigures =
{
1,1,1,1,1,1,1,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0
};
}
|
Der Compiler gibt einen Fehler mit den Klammern an .. hmm ...
Danke für Hilfe, und verspottet mich nicht^^  _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
 |
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 22.12.2005, 10:34 Titel: |
|
|
Die Fehlermeldung hinschreiben - wäre auch nicht schlecht.
In welcher Zeile genau wird der Fehler gemeldet?
wenn hier
Code: | bool opm_activeFigures[NUMBER_FIGURES]; |
dann könnte ich mir vorstellen, dass NUMBER_FIGURES eine Variable ist |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 22.12.2005, 10:34 Titel: |
|
|
Wäh sind ja schlimm aus
CPP: | class gameplay // Wofür C davor? Magste MFC?
{
public:
gameplay (void);
// Wo sind destruktor und copyconstructor???
private: // use private!
// Ungarische Notation? igitt!
bool activeFigures_[NUMBER_FIGURES]; // Ich hoffe für dich, das NUMBER_FIGURES kein #define ist.
unsigned long numActivFigures_; // Wofür short? Wofür int? Warum kein unsigned?
// Kannst Du auch negative aktive Figuren haben? denke nicht.
};
// Initialisierungslisten bitte benutzen, zuweisung im Constructor wird nicht gern gesehen
gameplay::gameplay (void) : numActivFigures_(0), numPreviews_(1)
{
bool activeFigures[NUMBER_FIGURES] =
{
1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
::memcpy (activeFigures_, activeFigures, sizeof(activeFigures));
} |
Du kannst ein Array nicht nachträglich mit einer Übergabeliste initalisieren. Initialisierung geht nur direkt bei der Instanzierung. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 22.12.2005, 12:26 Titel: |
|
|
Patrick hat Folgendes geschrieben: |
CPP: | bool activeFigures_[NUMBER_FIGURES]; // Ich hoffe für dich, das NUMBER_FIGURES kein #define ist.
|
|
Warum kein #define mit einer Varieblen gibt es doch erst ein fehler?? _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 22.12.2005, 12:33 Titel: |
|
|
Patrick, wieso verwendest du eigentlich immer long statt int? _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 22.12.2005, 12:42 Titel: |
|
|
fast hawk
CPP: | #define VARIABLE 44
void foobar (int value);
void foobar (unsigned int value);
void foobar (unsigned long int value);
void foobar (float value);
void foobar (double value);
void foobar (char value);
void foobar (unsigned char value);
void foobar (wchar_t value);
void foobar (bool value);
///usw...
int main (void)
{
foobar (VARIABLE); // Na was wird aufgerufen?
return 0;
} |
Zum Thema variabel: Wofür gibt es const? Spitzen erfindung!
CPP: | const unsigned long wert = 22;
long array[wert]; // geht wunderbar! |
PeaceKiller
Guck mal was mit int los ist und was bei den anderen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_langref_data_type_ranges.asp
Da ich viel mit Binärdateien rumhantiere, int jedoch keine vom Standard festgelegte Mindesttiefe besitzt. kann es bei binärdateien häufig krachen und auf 64 Bitsystemen probleme mit 32 Bitprogrammen geben _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.12.2005, 13:32 Titel: |
|
|
ey, wir müssen uns jetzt net shcon wieder darüber streiten.Das Problem ist dneke ich geklärt, wie gesagt, muss man Initialisierungslisten verwenden (wie auch bei Konstanten in einer Klase) und damit hats sich.
Beispiel für Initialisirungslisten:
CPP: | class Klasse
{
public:
Klasse();
int X, Y;
const int Z;
}
Klasse::Klasse():
X(1),
Y(2),
Z(3)
{
}
|
_________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 22.12.2005, 14:05 Titel: |
|
|
Warum muss eigentlich dauernd jemand in eine friedliche Konversation 'nen Streit hineininterpretieren?
Fand die Diskussion bis jetzt informativ und ohne verbale Ausfälligkeiten.
 |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 22.12.2005, 14:36 Titel: |
|
|
Gilt das auch für den 64bit-Complier von MS? _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 22.12.2005, 14:56 Titel: |
|
|
PeaceKiller hat Folgendes geschrieben: | Gilt das auch für den 64bit-Complier von MS? |
Sollte für alle MS-Compiler gelten, auch die 16-Bit Compiler (die es noch gibt).
C. |
|
Nach oben |
|
 |
David Super JLI'ler
Alter: 40 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 22.12.2005, 15:04 Titel: |
|
|
Hi!
@Jonathan_Klein: Konnte auch keinen Streit entdecken! Was Patrick sagte war alles korrekt und niemand hat ihm widersprochen!
grüße |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 22.12.2005, 15:51 Titel: |
|
|
Patrick
Um den Fehler mit den verschiedenen Typen zu engehen musst man es halt so deklanieren
CPP: | #define VARIABLE (long)120
#define VARIABLE (short)120
#define VARIABLE (float)120.0f
#define VARIABLE (double)120.0
|
Aber das mit den Konstanten werde ich mir merken DANKE!!  _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 22.12.2005, 15:58 Titel: |
|
|
fast hawk
Ein Guter Compiler gibt spätestens da schon Fehler aus wegen einer redefinition. Grottenschlechte Compiler spucken spätestens hier einen Fehler aus:
CPP: | #define VARIABLE (float)120.0f
blubb = reinterpret_cast<float>(VARIABLE); |
_________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Mat Senior JLI'ler

Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 22.12.2005, 16:23 Titel: |
|
|
Supi, jetzt weiß ich woranes lag ..
noch eine Frage @Patrick:
CPP: | ::memcpy (activeFigures_, activeFigures, sizeof(activeFigures));
|
Wofür genau steht das _-Zeichen bei activeFigures_ ?
Dass dieses Element der Klasse zugewiesenwird !?
PS: NUMBER_FIGURES ist eine Konstante, die ich bei Zahlen immer verwende ..
Bei Zeichenketten verwende ich (trotz "Effektiv C++ Programmieren") ganz gerne mal #define.
Das dadurch schwer zu findene Fehler entstehen halte ich für überspitzt, außerdem muss das Programm später weniger linken.
+ Es ist sehr bequem und übersichtlich  _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|