Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
cHaoS Mini JLI'ler
Anmeldedatum: 14.06.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 16.06.2007, 16:28 Titel: Probleme mit Strukturen und Arrays |
|
|
Hi, ich bins wieder und ich hab auch mal wieder ein saublödes Problem mitgebracht, diesmal mit Strukturen.
ich habe folgende Struktur definiert:
CPP: | struct Vector2D
{
int x;
int y;
};
|
In einer anderen CPP datei, in die ich die Headerdatei eingebunden hatte, in der die Struktur definiert ist, wollte ich dann ein Array aus dieser Struktur erstellen:
CPP: | Vector2D punkt1 = {10, 10};
Vector2D punkt2 = {60, 10};
Vector2D punkt3 = {60, 110};
Vector2D punkt4 = {10, 110};
Vector2D zentrum = {35, 60};
Vector2D punkte[4];
punkte[0] = punkt1;
punkte[1] = punkt2;
punkte[2] = punkt3;
punkte[3] = punkt4;
|
Jedoch gibt der mir in jeder Zeile, in der ein Punkt dem Array übergeben werden soll Folgende Fehlermeldung aus:
error C2501: 'punkte' : missing storage-class or type specifiers
error C2371: 'punkte' : redifinition; different basic types
error C2440: 'initializing' : cannot convert from 'Vector2D' to 'int[]' bzw. 'int[1]' bzw int[2] bzw int[3]
und zur ersten werteübergabe sagt er noch:
error C2466: cannot allocate an array of constant size 0
Ich hab keinen Plan, was genau ich falsch gemacht habe, irgendwelche ideen? |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 16.06.2007, 17:48 Titel: |
|
|
Irgendwo noch ein Feld namens "punkte" angelegt? |
|
Nach oben |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 16.06.2007, 17:51 Titel: Re: Probleme mit Strukturen und Arrays |
|
|
cHaoS hat Folgendes geschrieben: |
und zur ersten werteübergabe sagt er noch:
error C2466: cannot allocate an array of constant size 0
|
erläute mal genauer...
hier??
CPP: | Vector2D punkt1 = {10, 10}; |
|
|
Nach oben |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 16.06.2007, 18:14 Titel: |
|
|
das problem liegt bereits hier:
CPP: | Vector2D punkt1 = {10, 10}; |
wenn es dir nur um die lösung geht, dann:
CPP: | struct Vector2D
{
Vector2D(void) : x(0), y(0) {}
Vector2D(int _x, int _y) : x(_x), y(_y) {}
int x;
int y;
};
[...]
Vector2D punkt1(10, 10);
Vector2D punkt2(60, 10);
Vector2D punkt3(60, 110);
Vector2D punkt4(10, 110);
Vector2D zentrum(35, 60);
Vector2D punkte[4];
punkte[0] = punkt1;
punkte[1] = punkt2;
punkte[2] = punkt3;
punkte[3] = punkt4;
|
|
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 16.06.2007, 23:40 Titel: |
|
|
Maxim hat Folgendes geschrieben: | das problem liegt bereits hier:
CPP: | Vector2D punkt1 = {10, 10}; |
|
Das ist überhaupt kein Problem. Viel interessanter wären die konkreten Zeilen wo die Fehler auftreten... |
|
Nach oben |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 17.06.2007, 06:59 Titel: |
|
|
naja, ich habe es einfach mit VC 2005 Express kompiliert und er meldet Fehler genau an diesem Punkt. Aber wieso das ist, kann ich mir nicht erklären, das es ja ok aussieht, geht aber nicht. |
|
Nach oben |
|
|
Xibus Junior JLI'ler
Alter: 33 Anmeldedatum: 18.02.2007 Beiträge: 91 Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten Medaillen: Keine
|
Verfasst am: 17.06.2007, 07:23 Titel: |
|
|
Das hier:
CPP: | struct Vector2D
{
int x;
int y;
};
void main()
{
Vector2D punkt1 = {10, 10};
Vector2D punkt2 = {60, 10};
Vector2D punkt3 = {60, 110};
Vector2D punkt4 = {10, 110};
Vector2D zentrum = {35, 60};
Vector2D punkte[4];
punkte[0] = punkt1;
punkte[1] = punkt2;
punkte[2] = punkt3;
punkte[3] = punkt4;
}
|
funktioniert fehlerfrei muss also irgendwie an der reihenfolge liegen... _________________ Signatur
|
|
Nach oben |
|
|
manu Super JLI'ler
Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 17.06.2007, 09:41 Titel: |
|
|
jup, vielleicht hat der autor versucht das hier:
CPP: | Vector2D punkt1 = {10, 10};
Vector2D punkt2 = {60, 10};
Vector2D punkt3 = {60, 110};
Vector2D punkt4 = {10, 110};
Vector2D zentrum = {35, 60};
Vector2D punkte[4];
punkte[0] = punkt1;
punkte[1] = punkt2;
punkte[2] = punkt3;
punkte[3] = punkt4;
|
außerhalb einer funktion zu machen.. |
|
Nach oben |
|
|
cHaoS Mini JLI'ler
Anmeldedatum: 14.06.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 17.06.2007, 11:07 Titel: |
|
|
oha, das muss man innerhalb einer funktion machen?
Oh weia, merke echt, dass mir die erfahrung fehlt...
Jetzt klappts, vielen lieben Dank! _________________ Ich bin der Schmetterling, ich bin der Sturm. |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 17.06.2007, 19:01 Titel: |
|
|
jo, das grundkonzept ist folgendes:
Speicherallokation- und Erstellen der glob. Variablen kann man außerhalb des Funktionsscopes machen. Anweisungen wie bei dir oben aber sind 2 Befehle, von denen einer ein direkter Befehl (Zuweisung) ist, der ausgeführt werden muss und nich zu den oben gen. 2 dingen gehört. Grundsätzlich verhält sich dein Bsp. nämlich so:
1. Erstellen der glob. Punkt Variablen (im Data-Segment)
2. Zuweisung der beiden Werte in den {}-Klammern
Diese Zuweisung ist eben ein seperater Befehl, der nicht bei der Initialisierung ausgeführt werden kann. Dagenen müsste das Bsp. von Maxim mit dem Konstruktor gehen, da dies der Initialisierung zugehört
Gruß DXer |
|
Nach oben |
|
|
|