Klassenelement direkt initialisieren



  • Laut dem Buch von Jürgen Wolf kann man nach C++11 Klassenelemente direkt initialisieren:

    #include <string>
    
    class Personal
    {
    private:
    	unsigned int personalID{ 0 };
    	unsigned int dgehalt{ 1800 };
    	std::string name{ "test" };
    public:
    	Personal();
    	~Personal();
    };
    

    Ich erhalte bei der Initialisierung des strings aber einen Fehler:

    Fehler	1	error C2797: Personal::name': Listeninitialisierung innerhalb Member-Initialisierungsliste oder Initialisierer für nicht statisches Datenmember ist nicht implementiert	c:\users\hplaptop\documents\visual studio 2013\projects\klassenprojekt\personal.h	10	1	Klassenprojekt
    

    Warum ist das so?
    Ich arbeite mit MS Visual Studio Express 2013 für Windows Desktop



  • VS 2013 unterstützt noch lange nicht alle C++11 Features. Hast du nachgesehen ob direkte Initialisierung von Membern auf der Liste steht?
    Und hast du dir überlegt was "ist nicht implementiert" im Gegensatz zu Formulierungen wie vielleicht "ist nicht erlaubt" bedeuten könnte?

    Davon abgesehen: wieso verwendest du ein Jürgen Wolf Buch? Hast du das absichtlich gekauft damit du uns dann damit quälen/ärgern kannst?

    Und noch ein Tip: Verwende die englische Visual Studio Version. Die deutsche Übersetzung ist stellenweise sehr schlecht (z.T. wurden da Keywords wie "template" übersetzt), und man findet viel weniger Informationen wenn man nach deutschen Fehlermeldungen o.Ä. sucht als wenn man nach den englischen sucht.



  • normalerweise müsste VS2013 das unterstützen, da es ja auch in den Buch von Jürgen Wolf vorgeschlagen wird und die direkte Initialisierung von einfachen Datentypen ja auch funktioniert. Ich hab schon die Einstellungen durchforstet ob eventuell noch ein Haken zu setzen ist.

    Was spricht gegen Jürgen Wolf? Ich finde das Buch eigentlich gut geschrieben und vor allem verständlich. Welches C++ Buch wäre besser geeignet? Gibt es ein "Standardwerk"?



  • Bücherliste sowie einen Haufen weiterer Links/Informationen findest du hier: https://www.c-plusplus.net/forum/310212

    Und gegen Jürgen Wolf spricht einfach dass er schlechte Bücher schreibt.
    Natürlich fällt dir als Anfänger nicht auf wie viele ungenaue oder gar gänzlich falsche Sachen da drinnen stehen. Du weisst es ja noch nicht besser.
    Gerade deswegen ist es ja auch so schlimm.
    Aus einigen Beispielen in seinen Büchern geht auch ziemlich klar hervor dass er überhaupt nicht verstanden hat wie die Sprache funktioniert. Das sind so Fehler die man einfach nicht machen kann wenn man weiss wie C++ und Computer im Allgemeinen so funktionieren.

    Liest einfach mal diesen Thread: https://www.c-plusplus.net/forum/272350-full
    Oder diesen: https://www.spieleprogrammierer.de/18-c-cplusplus-csharp-java-und-andere-sprachen/17648-jürgen-wolf-cplusplus-von-a-bis-z/

    Wobei er lange nicht der einzige ist der schlechte C++ Bücher schreibt. Seine scheinen bloss aus mir unerfindlichen Gründen die beliebtesten der grottigen Bücher zu sein.

    Persönlich kann ich dir leider kein Anfängerbuch empfehlen, da ich ehrlich gesagt selbst nie eines gelesen habe. Ich habe C++ vor vielen Jahren "auf die Harte Tour" erlernt (Zeitschriften + Freunde + Referenzdoku + Trial & Error). "Die C++-Programmiersprache" von Stroustrup und der "C++ Primer" von Lippman et al. sind z.B. sehr beliebt, aber wie gesagt: nie selbst gelesen.

    Für später kann ich dir aber die "effective" Serie von Scott Meyers und die "exceptional" Serie von Herb Sutter empfehlen. Und das GoF Buch ("Design Patterns" von Gamma et al.).



  • Hast du denn Jürgen Wolf gelesen?


  • Mod

    BTW: VS-2015 RC kompiliert diesen Code erfolgreich.


Anmelden zum Antworten