sein Ich nehme an, die statische Daten Mitglied einer Klasse ein Referenztyp auf eine globale Variable wie folgt initialisiert werden kann:Probleme mit Referenztyp Static Data-Mitglied, könnte Compiler Fehler
#include <iostream>
#include <stdio.h>
const unsigned int global =0x1fee;
struct K {
int a;
static const int & iref;
};
const int & K::iref=global;
int main()
{
printf("%d\n",K::iref);
return 0;
}
Aber in meinem VC++ test, Es kann kompilieren, aber bei der Ausführung eine Ausnahme erzeugen. Ist es nur ein Fehler mit VC++? Habe ich etwas falsch gemacht?
Wollen Sie absichtlich versuchen, ein 'unsigned int' an ein' signed int & 'zu binden? – dyp
Nein, nur zum Testen des Problems. kein Problem wenn ich'global 'in signed int ändere. Es sieht also wie ein Fehler aus, aber ich möchte bestätigen, dass es – JavaMan
ist. Es sieht tatsächlich wie ein Fehler aus. Durch Binden eines "unsigned int" an ein "signed int const &" sollte ein temporärer 'unsigned int' erzeugt werden, dessen Lebensdauer auf die Ziel-Referenzvariable (' K :: iref') ausgedehnt wird. Es sieht fast so aus, als würde MSVC diese lebenslange Erweiterung nicht ausführen. – dyp