const array[y][x] in Klasse benötigt - wie gehts?



  • pumuckl schrieb:

    Du kannst im Header keine Definitionen einbauen wenn du den Header in verschiedenen Übersetzungseinheiten benutzt. Du hättest dann nämlich in mehreren ÜEs die selbe Definition und der Linker würde was von "multiple definition of..." erzählen. Das wäre dann vermutlich dein "geht nicht".

    Um meinen Namen alle Ehre zu machen, werde ich jetzt mal pingelig. Die "one-definition-rule" (ODR) erlaubt mehrere äquivalente DeFINItionen von
    - Klassen
    - Klassen-Templates
    - Elementfunktionen von Klassen-Templates
    - Statische Elemente von Klassen-Templates
    - Inline-Funktionen
    - Funktions-Templates
    falls diese in verschiedenen ÜEs stehen, also höchstens eine Def pro ÜE. Was nicht erlaubt wird sind Mehrfachdefinitionen von "normalen" Funktionen, Referenzen und Objekten (inklusive Arrays). Es gibt auch keinen guten Grund dafür, das anders handzuhaben.



  • Na Toll!

    Also der Compiler sagt alles ok! Zur Laufzeit ist aber nur Grütze im Array drin.
    Woran kann das denn liegen?


  • Mod

    protonmw schrieb:

    Woran kann das denn liegen?

    Du hast einen Fehler in deinem Programm.



  • Na das dachte ich mir auch schon! :p
    Hier die Definition (global):

    unsigned short m_awPhi1[13][9]=
    {
    //	 0   60  120 180 240 300 360 420 480
    	{579,566,553,539,526,513,499,486,473},	//0
    	{576,560,551,539,526,513,501,492,476},	//60
    	{574,562,550,538,526,514,502,490,478},	//120
    	{572,560,549,538,526,514,503,492,480},	//180
    	{570,559,548,537,526,515,504,493,482},	//240
    	{568,557,547,537,526,515,505,495,484},	//300
    	{566,556,546,536,526,516,506,496,486},	//360
    	{564,555,545,535,526,517,507,497,488},	//420
    	{563,554,545,534,526,518,507,498,489},	//480
    	{562,553,544,534,526,518,508,499,490},	//540
    	{560,552,543,534,526,518,509,500,492},	//600
    	{559,551,543,534,526,518,509,501,493},	//660
    	{558,550,542,534,526,518,510,502,494}	//720
    };
    

  • Mod

    Die Definition an sich stimmt, also liegt der Fehler woanders. Was genau ist denn "Grütze"?



  • Es steht in jeder Zelle :52685 bzw. 0xCDCD



  • Visual C++?



  • Jepp!

    Visual Studio 2005 Professional



  • Das füllt uninitialisierte Speicherbereiche mit 0xCDCD.

    Verstehe ich dich richtig das m_awPhi1 eine statische Membervariable sein soll? Und das unten die Initialisierung im Source-File sein soll? Muss dann nich noch der Klassenname davor?



  • *KopfGegenTischSchlag*

    Und ich habe auch noch behauptet, es so gemacht zu haben!! 🙄

    JETZT GEHTS WIRKLICH! DANKE!


Anmelden zum Antworten