Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

17.05.2015, 12:14

Naja, im Link steht halt noch ein wenig Quatsch, lösch den raus, dann geht er auch. Und es scheint mit "-std=c++14" kompiliert zu sein, ich weiß grad nicht, ab wann genau variadic templates richtig funktionieren, aber der Compiler muss schon ziemlich aktuell sein.
Lieber dumm fragen, als dumm bleiben!

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

12

17.05.2015, 12:32

Hab ich getan, sonst wüsste ich nix von GCC 5.1. Ist auch wohl nur ab GCC 5.1 kompilierbar, nice.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

13

17.05.2015, 13:38

Kompiliert super, auch mit C++11. ;)
Das einzige was wohl zu ersetzen ist, ist die Initialisierung von Dimension durch die {}-Brackets, aber das ist ja kein Thema. Hier mal zum rumprobieren: *klick*

MfG
Check

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Checkmateing« (17.05.2015, 13:47)


Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

14

18.05.2015, 00:41

Ich nutze in meinem Zeugs derzeit die Möglichkeit 3, teilweise inspiriert durch Rust. Zum Beispiel gibt es passend zu meiner Window-Klasse eine WindowSettings-Klasse, die sinnvolle Standardwerte annimmt. Der Window-Konstruktor nimmt ausschließlich ein WindowSettings an. Die Settings kann man dann zu jeder Zeit auslesen, aber auch serialisieren und deserialisieren. Und à la Rust geht auch die folgende Syntax, die etwas nach Keyword-Arguments riecht:

C-/C++-Quelltext

1
2
3
4
5
6
Window _wnd(
  WindowSettings::from_title(u8"Test Window")
                          .size( {320,240})
                          .process_events(true)
                          .with_keyboard(true)
);
Dabei kreieren die from_*-Funktionen ein neues WindowSettings-Objekt mit dem jeweils gewünschten Parameter. Natürlich kann man auch den viel zu großen Konstruktor von WindowSettings nutzen, der einfach alles auf einmal setzt, dafür aber unleserlich ist.

Was mir an diesem Ansatz am meisten gefällt ist die "elegante" Trennung zwischen Daten des Window-Objekts, die serialisierbar, konfigurierbar und abfragbar sind (z.B. die Fenstergröße), und solchen, die den Nutzer des APIs nichts angehen (z.B. Pointer zu weggekapselten Lower-Level-APIs wie GLFW).

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

15

20.05.2015, 15:22

Also ich verwende meistens auch ein "Settings"-Struct, wobei hier sich meiner Meinung nach gerne die Geister streiten mögen, ob ein Struct oder Class semantisch angebrachter wäre.
Hat meiner Meinung nach mehrere Vorteile:
1. knalle ich mir nicht meiner Funktionen/Konstruktoren mit x Parametern voll
2. muss ich bei Änderungen nicht ständig alle Parameterlisten anpassen
3. (de)serialisierung wird erheblich vereinfacht und übersichtlicher
4. wird die Klasse an sich auch wesentlich übersichtlicher

Ich muss sagen, dass ich bisher noch nie darüber nach gedacht habe bei den Settern eine Referenz auf sich selbst zurück zu geben um solche Zuweisungs Chains wie Evrey sie verwendet, zu ermöglichen. Danke dafür ;)

16

20.05.2015, 17:38

Zitat

Ich muss sagen, dass ich bisher noch nie darüber nach gedacht habe bei den Settern eine Referenz auf sich selbst zurück zu geben um solche Zuweisungs Chains wie Evrey sie verwendet, zu ermöglichen. Danke dafür

*klick*

Ich persönlich bin ja auch ein ziemlicher Fan von Boost.Parameter, auch wenn man es praktisch recht selten benutzt, weil man sich, wenn man was aus Boost braucht, wegen der Größe von Boost, meist selbst etwas zusammenhackt und das ziemlich Sledgehammer-Style wäre, trotzdem das hier zu benutzen. Wenn man aber tatsächlich nichts gegen exorbitant große Kompilierzeiten hat, go for it

MfG
Check

Werbeanzeige