Datenelement mit dem Klassennamen

8

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?

    
code_not_yet_complete 08.08.2015, 20:10
quelle

1 Antwort

3
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123visualc ___ Microsoft Visual C ++ ist ein C-, C ++ - und C ++ / CLI-Compiler für Windows. Die neueste Version des Compilers ist Visual C ++ 2017. Der Compiler unterstützt folgende Sprachen: C: Unterstützt C90 und die meisten C99- und C11-Teile des ISO C ++ - Standards ab Visual Studio 2017 C ++: Unterstützung für die meisten C ++ 11 Features und einige C ++ 14 und C ++ 17 Features ab Visual Studio 2017 C ++ / CLI ___ tag123class ___ Eine Vorlage zum Erstellen neuer Objekte, die die allgemeinen Zustände und Verhaltensweisen beschreibt. NICHT MIT CSS-KLASSEN VERWECHSELN. Verwenden Sie stattdessen [css]. ___ qstnhdr ___ Datenelement mit dem Klassennamen ___ tag123member ___ Ein Member ist ein Element eines Objekts im objektorientierten Programmierparadigma. ___ answer3955933 ___

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.)

    
___ qstntxt ___

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?

    
___ tag123classname ___ Klassenname kann sich auf Klassen in Skriptsprachen und Auszeichnungssprachen beziehen. Typischerweise bezeichnet eine Klasse einen bestimmten Teil der Anwendung, der manipuliert werden kann. ___
Potatoswatter 12.08.2015 04:16
quelle