(C++) konstante Elemente in Struktur
-
wieso können MSVC und GNUC(da lief es jetzt jahrelang) das und der BCB gibt die Fehler?
[C++ Fehler] Unit1.cpp(36): E2232 Konstante-Element 'MENUE_VAR_TYP::ADRESSE' in Klasse ohne Konstruktoren
[C++ Fehler] Unit1.cpp(36): E2232 Konstante-Element 'MENUE_VAR_TYP::test_funktion' in Klasse ohne Konstruktoren
??enum TEST_FUNKTION_VAR { QWE, RTZ, ZUI, }; struct MENUE_VAR_TYP { unsigned char XPOS; unsigned char YPOS; const void* const ADRESSE; unsigned char INDEX; unsigned char MAX_FELD; void (* const test_funktion)(TEST_FUNKTION_VAR komplett); }; const MENUE_VAR_TYP foo[] = { {1, 2, 0, 0, 0, 0} };
Der Fehler scheint mir mit der stuctdeklaration ein wenig verfrüht zu kommen da er doch noch garnich weiss wie ich die Dinger deklariere =[ .
[ Dieser Beitrag wurde am 19.03.2003 um 12:10 Uhr von dreaddy editiert. ]
-
was ist das denn bitteschön??? const xxx const???
const void* const ADRESSE;
// probiers mal hiermit struct MENUE_VAR_TYP { unsigned char XPOS; unsigned char YPOS; const void *ADRESSE; unsigned char INDEX; unsigned char MAX_FELD; const void (*test_funktion) (TEST_FUNKTION_VAR komplett); };
[ Dieser Beitrag wurde am 19.03.2003 um 15:13 Uhr von Sunday editiert. ]
-
naja du kannst bei pointern 2 Sachen konst machen...
Einmal den Zeiger ansich und einmal den Inhalt.sprich beim einen const geht
zeiger = 0x234234; nicht
und beim andern geht
*zeiger = 123;
nichtDas es geht wenn das zweite const weg ist ist mir klar
aber leider muss ich alten Programmcode nehmen und wenn ich das weglassen würde müsste ich abgesehen von der wegfallenden Sicherheit so um die 20000 Programmzeilen ändern
[ Dieser Beitrag wurde am 19.03.2003 um 16:30 Uhr von dreaddy editiert. ]
-
Ich verschieb das mal nach "C++", um zu klären, ob hier dein Code/MSVC/GNUC oder der BCB vom Standard abweichen.
Anbei noch der entsprechende Eintrag aus der Borland-Hilfe:
Eine Klasse, die konstante oder Referenzelemente (oder beides) enthält, muß mindestens einen benutzerdefinierten Konstruktor haben.
Ansonsten gäbe es keine Möglichkeit, solche Elemente zu initialisieren.