Der Standard sagt, "Ein Mitglied einer Klasse T kann T nicht als Namen verwenden, wenn es sich bei dem Element um ein statisches Datenelement, eine Elementfunktion, einen Elementtyp, eine Elementvorlage, einen Enumerator einer unbegrenzten Aufzählung, ein Mitglied einer anonymen Unionsmitgliedschaft handelt kann ein nicht statisches Datenelement den Namen T verwenden, solange keine vom Benutzer deklarierten Konstruktoren vorhanden sind. "
Wenn ich jedoch diese Klasse erstelle, ergibt sich ein Kompilierungsfehler.
%Vor%Ich verwende VS2013. Ist es in Microsoft nicht erlaubt oder?
Wenn VC ++ dies nicht erlaubt, ist es ein Fehler.
Dieses Sprachfeature dient jedoch der C-Kompatibilität, und Microsoft hat sich entschieden, C nicht zu betonen. Zum Beispiel sind C99-Funktionen in der Regel nicht verfügbar, bis sie von C ++ übernommen werden. Sie sollten solch ein Mitglied nie absichtlich in C ++ deklarieren.
(Es ist in C einfach standardmäßig erlaubt: Es gibt keine Einschränkungen für die Benennung von Mitgliedern und alle Mitglieder sind nicht statische Datenmitglieder.)
Der Standard sagt, "Ein Mitglied einer Klasse T kann T nicht als Namen verwenden, wenn es sich bei dem Element um ein statisches Datenelement, eine Elementfunktion, einen Elementtyp, eine Elementvorlage, einen Enumerator einer unbegrenzten Aufzählung, ein Mitglied einer anonymen Unionsmitgliedschaft handelt kann ein nicht statisches Datenelement den Namen T verwenden, solange keine vom Benutzer deklarierten Konstruktoren vorhanden sind. "
Wenn ich jedoch diese Klasse erstelle, ergibt sich ein Kompilierungsfehler.
%Vor%Ich verwende VS2013. Ist es in Microsoft nicht erlaubt oder?
Tags und Links class c++ visual-c++ member classname