cppfor2023W17
Recent Links (if any)
https://godbolt.org/z/xvrqPvez7 (Lambda BeispielDonnerstag)
https://godbolt.org/z/dWhETPbEY (Mittwoch)
- https://godbolt.org/z/e9Y65zj58
- https://godbolt.org/z/68sa41Mzj
- https://godbolt.org/z/x8KTcc53x
- https://godbolt.org/z/f351MqG1P
Chess Clock Example (Step by Step):
Montag
- https://godbolt.org/z/7jo5oo15d Vorgabe für Mini-Übung (siehe enthaltene TBDs)
- https://godbolt.org/z/KGxWr7o7r Lösung zur Mini-Übung
- https://godbolt.org/z/Wo9Kddrvj Vorgabe für "Chess-Clock" (Schritte 1 bis 3)
Die TBDs sind hier in mehrere Schritte eingeteilt. Es gibt (kummulative) Musterlösungen für jeden dieser Schritte. Sie können diese ggf. auch als neuen Startpunkt verwenden, wenn Sie die Bearbeitung eines Schritts auslassen wollen. - https://godbolt.org/z/bs1v8TKqn Lösung zur "Chess-Clock" (Schritt 1)
enthalten ist auch eine Anregung für ein weiterer Ausbau-Vorschlag- https://godbolt.org/z/7jvdcxdco Lösung Ausbauvorschlag (`operator<<`)
- https://godbolt.org/z/coovKffYE erweiterte Lösung (einfaches TDD)
- https://godbolt.org/z/PcMfK4fPK Lösung zur "Chess-Clock" (Schritt 2)
Hinweis: Die vollständige Realisierung von Schritt 3 erfordert relativ viel "sytematische Arbeit". Insbesondere bei Zeitknappheit wird daher vorgeschlagen, statt diese Schritt selbst zu erarbeiten siw Unterschiede zwischen der Lösung von Schritt 2 und der Lösung von Schritt 3 in einer Diff-Ansicht "side by side" amzusehen und anhand dessen zu kontrollieren, ob der zugrundeliegende Anatz verstanden wurde,
- https://godbolt.org/z/Pec65GPfs Lösung zur "Chess-Clock" (Schritt 3)
enthalten ist auch ein Vorschlag zur Vereinfachung der Kontrollstrukturen- https://godbolt.org/z/1P9TE46WT Lösung zum Vereinfachungs-Vorschlag
- https://godbolt.org/z/eoenbfcGK Lösung zur "Chess-Clock" (Kommando-Hilfe)
Dienstag
- https://godbolt.org/z/Pa96ecf17 Vorgabe für Chess-Clock (Schritte 4 bis 7)
- https://godbolt.org/z/fTfM4foWo Lösung zur Chess-Clock (Schritt 4)
- https://godbolt.org/z/hqTfE61eG Lösung Seitenpfad (`__func__` vs. `__PRETTY_FUNCTION__`)
- https://godbolt.org/z/G8hPf54G3 Lösung zur Chess-Clock (Schritt 5)
- ... Lösung zur Chess-Clock (Schritt 6)
- https://godbolt.org/z/YGE7sK4a9 Lösung zur Chess-Clock (Schritt 7)
Mittwoch
- https://godbolt.org/z/seP3KxE3E Vorgabe für Chess-Clock (Schritt 8)
- https://godbolt.org/z/o9ndnddds Lösung für Chess-Clock (Schritt 8)
- ... alternative Lösung gemäß "NullObject"-Pattern
- https://godbolt.org/z/PWPEqncGv Vorgabe für Chess-Clock (Schritt 9)
- https://godbolt.org/z/3EzofGbqW Lösung für Chess-Clock (Schritt 9)
- https://godbolt.org/z/9vs9TjEaq alternative Lösung OHNE protected
- https://godbolt.org/z/6nexj4x5P Vorgabe für Chess-Clock (Schritt 10)
- https://godbolt.org/z/o8WP78Eob Lösung für Chess-Clock (Schritt 10)
Donnerstag
- ... Vorgabe für Chess-Clock (Schritt 11 - TBD: Einführung eines Interface)
- https://godbolt.org/z/qfzo9bGEe Lösung für Chess-Clock (Schritt 11)
- ... Vorgabe für Chess-Clock (Schritt 12)
Weitere kleine Demo-Beispiele
- https://godbolt.org/z/TMj1hs6W9 überladene Operatoren sind AUCH ganz normale Funktionen (freistehend oder Member einer Klasse) nur mit einem "besonderen" Namen
- https://godbolt.org/z/neW91Mh7f
- https://godbolt.org/z/dWhETPbEY (Lambda-Motivation am Beispiel von `std::sort`)
- https://godbolt.org/z/xvrqPvez7 (Lambdas und andere Callables)
- https://godbolt.org/z/u46q9H (Copy und Move)
- https://godbolt.org/z/xnKaxeKxx (ASCII-Tabelle)
- https://godbolt.org/z/x8KTcc53x (C'tor-Argumentlisten an Basisklassen weiterreichen)
- https://godbolt.org/z/ff6P4faxE (`std::unique_ptr` statt C-Stil Pointer)
Kompilierbare Beispiel aus Schulungsordner
Beispiele aus Kapitel Basics´ Refreshments:
- https://godbolt.org/z/hsrYvb (copy-paste BASICS-40...46)
- https://godbolt.org/z/rsne7M (Variationen zum Thema)
- https://godbolt.org/z/GYT1hj
- https://godbolt.org/z/PnY9Ks
- ...
Beispiele aus Kapitel Exceptions
- https://godbolt.org/z/A6bg9U (copy-paste EX-15...18)
- https://godbolt.org/z/S4op5a (copy-paste EX-21...24)
- https://godbolt.org/z/ve-bBX (copy-paste EX-25)
- https://godbolt.org/z/m7K92A (copy-paste EX-26)
- https://godbolt.org/z/iYJ4yJ (copy-paste EX-27)
- https://godbolt.org/z/WquFzw (copy-paste EX-30...33)
- https://godbolt.org/z/5rz1jdWhr (Variante mit `std::out_of_range`)
- https://godbolt.org/z/XHtBLn (copy-paste EX-42...44)
- https://godbolt.org/z/mdVmeY (copy-paste EX-42..43+45)
- https://godbolt.org/z/gejU3B (copy-paste EX-42..43+46)
Weiterführende Links
- https://www.stroustrup.com/dne.html (Design and Evolution of C++)
- https://isocpp.org/wiki/faq/proper-inheritance (Richtiger EInsatz von Vererbung)
- http://bleading-edge.com/Publications/C++Report/v9605/abstract.htm
(Jack Reeves: Guidelines for Throwing Exceptions) - http://bleading-edge.com/Publications/C++Report/v9603/abstract.htm
(Jack Reeves: Guidelines for Coping with Exceptions)
Eigene Info-Grafiken
- https://tbfe.de/data/uploads/infographics/ (Creative Commons Copyright BY-SA)
- https://tbfe.de/data/uploads/infographics/ExceptionBasics.png
- https://tbfe.de/data/uploads/infographics/ExceptionDetails.png
- https://tbfe.de/data/uploads/infographics/ClassToMemoryMapping.png
- https://tbfe.de/data/uploads/infographics/MultipleInheritance.png
- https://tbfe.de/data/uploads/infographics/MultipleInheritance.png
- https://tbfe.de/data/uploads/infographics/Example-OpenClosePrinciple.png
Stream Dienstagnachmittag
- Zum "nur Ansehen" bitte diesen Link benutzen:
https://www.youtube.com/watch?v=VMNuOQi98z0
Der Stream kann dort auch angehalten und zurückgespult werden. Wenn man diese Möglichkeit nicht nutzt und "LIVE" angezeigt wird, ist der Stream immer noch ein paar Sekunden verzögert. - Über den Youtube Side-Chat können Sie sich jederzeit miteinander unterhalten und prinzipiell auch mit mir kommunizieren. Nur werde ich während meiner Vorführung nicht so sehr auf den Chat achten. Der Chat bleibt auch Live, wenn man den Stream zurückspult, d.h. die neuesten Messages dort beziehen sich vermutlich auf das, was ich in diesem Moment vortrage, NICHT auf einen evtl. zurückgespulten Zustand.
- Sobald ich fertig bin, lade ich gerne Gäste ein für Fragen. Dafür ist der folgende Link da:
https://streamyard.com/tix8e3tr76
In dem Moment, in dem ich jemanden ins Studio bringe, dann bitte ich denjenigen bzw. diejenige sein/ihr Browserfenster zu schließen oder zumindest auf stumm schalten, in dem man den Stream vorher (zeitverzögert) angesehen hat – ansonsten kann es üble Echo-Effekte geben.
Im Teilnehmer-Fenster (oder den Browser-Tab) wird ebenfalls Audio mitgeliefert und das mit wesentlich geringerer Verzögerung als die des Streams zum "nur Ansehen. Aber eine kleine Verzögerung kann (und wird tyischerweise) immer noch auftreten. - Also bei kurzer "Stille" nicht einfach davon ausgehen, dass "nichts" (= keine Antwort von mir) mehr kommt! Meine Antwort könnte bereits auf dem Übertragungsweg sein.