Warnungen bei einer Class
-
Hi Folks.
Also ich habe ein Problem mit meiner Classe MP3Header.
Dieser Topic bezieht sich masgeblich auf diesen hier -> Die ersten 32Bit einer File auslesen
ist aber nicht wirklich notwendig den durchgelesen zu haben.also hier ist ein ausschnitt aus meiner class:
public: MP3Header(void) : FILLED_BITS ('0xFF'), FILLED_BITS2('0xE0') { count = 0; const unsigned char FILLED_BITS = '0xFF'; const unsigned char FILLED_BITS2 = '0xE0'; } long int First4x8Bit; short int Bits[32]; char OneByte; int count; const unsigned char FILLED_BITS; const unsigned char FILLED_BITS2; FILE * FilePointer;
Ich erhalte vom Compiler folgende Fehlermeldungen:
--------------------Konfiguration: MP3Header - Win32 Debug--------------------
Kompilierung läuft...
Source.cpp
Source.cpp(33) : warning C4305: 'initializing' : Verkuerzung von 'const int' in 'const unsigned char'
Source.cpp(33) : warning C4309: 'initializing' : Verkuerzung eines konstanten Wertes
Source.cpp(33) : warning C4305: 'initializing' : Verkuerzung von 'const int' in 'const unsigned char'
Source.cpp(33) : warning C4309: 'initializing' : Verkuerzung eines konstanten Wertes
Source.cpp(35) : warning C4305: 'initializing' : Verkuerzung von 'const int' in 'const unsigned char'
Source.cpp(35) : warning C4309: 'initializing' : Verkuerzung eines konstanten Wertes
Source.cpp(36) : warning C4305: 'initializing' : Verkuerzung von 'const int' in 'const unsigned char'
Source.cpp(36) : warning C4309: 'initializing' : Verkuerzung eines konstanten Wertes
Linker-Vorgang läuft...MP3Header.exe - 0 Fehler, 8 Warnung(en)
wie kann ich sie beheben?
btw: das Programm läuft zwar aber ich wills wenn schon dann gründlich machen[ Dieser Beitrag wurde am 11.04.2003 um 20:01 Uhr von Peter Piksa editiert. ]
-
Ich kenn mit mit den Hexzahlen nich so aus, (genaugenommen hab ich nur jetzt keine Lust da rumzurechnen
) aber ich würde sagen die Zahl die du deinem const char zuweisen willst ist zu groß für einen unsigned char und der Compieler beschwert sich deshalb.
-
Original erstellt von 3xtr3m3 N00b5tyl0r:
aber ich würde sagen die Zahl die du deinem const char zuweisen willst ist zu groß für einen unsigned char und der Compieler beschwert sich deshalb.Ansich passen zwei Nibbles (Hexadzeimalstellen) in einen unsigned char.
Back to problem:
Es heißt entweder:
FILLED_BITS = 0xff;
oder
FILLED_BITS = '\xff';
aber nicht beides gemischtPS: welche Zeile ist denn eigentlich Zeile 33?
-
@TriPhoenix: Okay, danke. Problem ist gelöst
-
MP3Header(void) : FILLED_BITS ('0xFF'), FILLED_BITS2('0xE0') { count = 0; const unsigned char FILLED_BITS = '0xFF'; const unsigned char FILLED_BITS2 = '0xE0'; } [...] int count; const unsigned char FILLED_BITS; const unsigned char FILLED_BITS2;
Was machen die beiden Variablen FILLED_BITS und FILLED_BITS2 im Konstruktor. Wofür werden die da angelegt? Sie erhalten (nach dem du es berichtigast hast) den selben Wert, wie die Membervariablen der Klasse. Ist der Konstruktor in deinem Posting gekürzt?
und warum initialisierst du Kount nicht auch mit der Initilaisierungsliste?
-
Und wenn du schonmal dabei bist würde ich auch den FilePointer auf 0 initialiseren... Ist einfach sauberer