[C++] Double-Array funktioniert nicht

Jellysheep

Erfahrenes Mitglied
Hi,
ich versuche gerade verzweifelt, ein double-Array zu erstellen. So habe ich es probiert:
C++:
double* _YellowColor_ = new double[3];
_YellowColor_ [0] = 34.0/256.0;
_YellowColor_ [1] = 39.0/256.0;
_YellowColor_ [2] =   0.0/256.0;

Und so:
C++:
double _YellowColor_[3];
_YellowColor_ [0] = 34.0/256.0;
_YellowColor_ [1] = 39.0/256.0;
_YellowColor_ [2] =   0.0/256.0;

Beide Male wird aber für jede der drei letzten Zeilen der Fehler angezeigt:
error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
error C2371: 'YellowColor': Neudefinition; unterschiedliche Basistypen
Siehe Deklaration von 'YellowColor'
error C2440: 'Initialisierung': 'double' kann nicht in 'int []' konvertiert werden
Es gibt keine Konvertierungen von Arraytypen, obwohl es Konvertierungen von Verweisen oder Zeigern in Arrays gibt

Woher kommt das und wie kann ich das Problem lösen?
 
Den Code habe ich ja schon gepostet, sonst habe ich davor nur ein paar andere Definitionen und Includes.
Selbst wenn ich die Variable vor alle Includes stelle, kommt der Fehler.

Ich benutze Visual Studio 2008 und wenn ich den Mauszeiger über die Variable fahre, wird "int _YellowColor_[2]" angezeigt.
Was bedeutet das? Ich habe doch etwas anderes definiert.


Wenn ich statt diesem Code einfach "int x = 3;" schreibe, kommt dieser Fehler:
error C2040: 'x': 'int' unterscheidet sich von 'double [50]' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
Was ist denn jetzt los :confused:

//EDIT:
Das x war neudefiniert, sorry.
Das geht aber auch nicht:
C++:
int ggg;
ggg = 3;
Fehler:
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
error C2086: 'int ggg': Neudefinition
Siehe Deklaration von 'ggg'
 
Zuletzt bearbeitet:
Den Code habe ich ja schon gepostet
Die Fehlermeldungen passen aber nicht zum Code.
sonst habe ich davor nur ein paar andere Definitionen und Includes.
Selbst wenn ich die Variable vor alle Includes stelle, kommt der Fehler.

Ich benutze Visual Studio 2008 und wenn ich den Mauszeiger über die Variable fahre, wird "int _YellowColor_[2]" angezeigt.
Was bedeutet das? Ich habe doch etwas anderes definiert.


Wenn ich statt diesem Code einfach "int x = 3;" schreibe, kommt dieser Fehler:

Was ist denn jetzt los :confused:

//EDIT:
Das x war neudefiniert, sorry.
Das geht aber auch nicht:
C++:
int ggg;
ggg = 3;
Fehler:
Hast du irgendwelche Makros definiert?

Der komplette Code bzw. ein vollständiges Minimalbeispiel wäre hilfreich.

Gruß
 
Ok, hier ein Minimalbeispiel:
C++:
// ScrSvr2.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
char ysc[3];
ysc[0] = 's';
ysc[1] = 'q';
ysc[2] = 'j';


int main()
{
}
Fehlermeldung:
1>ScrSvr2.cpp
1>.\ScrSvr2.cpp(4) : error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
1>.\ScrSvr2.cpp(4) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\ScrSvr2.cpp(4) : error C2371: 'ysc': Neudefinition; unterschiedliche Basistypen
1> .\ScrSvr2.cpp(3): Siehe Deklaration von 'ysc'
1>.\ScrSvr2.cpp(4) : error C2440: 'Initialisierung': 'char' kann nicht in 'int []' konvertiert werden
1> Es gibt keine Konvertierungen von Arraytypen, obwohl es Konvertierungen von Verweisen oder Zeigern in Arrays gibt
1>.\ScrSvr2.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\ScrSvr2.cpp(5) : error C2369: 'ysc': Neudefinition; unterschiedliche Feldindizes
1> .\ScrSvr2.cpp(3): Siehe Deklaration von 'ysc'
1>.\ScrSvr2.cpp(5) : error C2440: 'Initialisierung': 'char' kann nicht in 'int [1]' konvertiert werden
1> Es gibt keine Konvertierungen von Arraytypen, obwohl es Konvertierungen von Verweisen oder Zeigern in Arrays gibt
1>.\ScrSvr2.cpp(6) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\ScrSvr2.cpp(6) : error C2369: 'ysc': Neudefinition; unterschiedliche Feldindizes
1> .\ScrSvr2.cpp(3): Siehe Deklaration von 'ysc'
1>.\ScrSvr2.cpp(6) : error C2440: 'Initialisierung': 'char' kann nicht in 'int [2]' konvertiert werden
1> Es gibt keine Konvertierungen von Arraytypen, obwohl es Konvertierungen von Verweisen oder Zeigern in Arrays gibt
 
Ich hab den Fehler jetzt gefunden, ich hab sozusagen im leeren Raum programmiert...
Ich verschiebe jetzt die Zuweisung der einzelnen Array-Werte in die main-Funktion, dann funktioniert es. ;)
 
Hi.
Ich hab den Fehler jetzt gefunden, ich hab sozusagen im leeren Raum programmiert...
Ich verschiebe jetzt die Zuweisung der einzelnen Array-Werte in die main-Funktion, dann funktioniert es. ;)
Deshalb ist der Kontext wichtig und ein Minimalbeispiel manchmal notwendig; man darf keine Anweisungen im globalen Skopus aufschreiben, aber man darf das Array direkt initialisieren:
C++:
double _YellowColor_[] = {
  34.0/256.0,
  39.0/256.0,
  0.0/256.0
};
Gruß
 
Zurück