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

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

11

18.10.2014, 17:02

Wenn es darum geht, gibt es auch noch die Möglichkeit über User defined literals.
Gibt es leider aber leider von Microsoft noch aber nur in der CTP, also wahrscheinlich keine Option.

C-/C++-Quelltext

1
2
3
4
5
6
7
double operator "" _Deg(long double Value)
{ 
    return static_cast<double>(Value) * (M_PI / 180.0); 
}


double Test = 180.0_Deg; //pi/2


Wie auch immer, auch ohne dieses Features würden es normale Funktionen ohne so viele Templates tun, wie BlueCobold schon gezeigt hat.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

18.10.2014, 17:10

Außerdem: der Code schlägt nicht fehl, weil meine Templates falsch sind, sondern weil es definitiv ein BUG im Compiler ist.
Mit einfachen Methoden oder Funktionen wäre das dennoch nicht passiert. Wahlweise mit einer Konstanten zur Umrechnung der Werte. Da kann der Compiler noch wesentlich mehr optimieren und das in jedem Fall.

Obwohl ich mal gehört habe, dass es noch eine dritte Einheit gibt. Weiß aber nicht mehr wie die heißt und wie da der Bereich ist.
Gon. 0..400. Wird im Bau benutzt, weil Winkel von 90° und 45° unschön sind und sie lieber mit 100 und 50 rechnen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

13

18.10.2014, 17:34

Gibt es leider aber leider von Microsoft noch aber nur in der CTP, also wahrscheinlich keine Option.

Genau, das gibt's nämlich noch nicht in MSVC12. Wäre aber definitiv die beste Möglichkeit.

dv

Frischling

Beiträge: 30

Wohnort: Südamerikanischer Dschungel

  • Private Nachricht senden

14

24.11.2014, 10:22

Zugegeben, für Winkel bei denen man nur Degree und Radian braucht, ist es vielleicht etwas übertrieben.
Ich halte aber lieber immer alles so generisch wie möglich.
Zum Einen weil dann der Compiler unter Umständen noch mehr Optimierungen vornehmen kann
und zum Anderen weil ich mich nicht gerne festlege, insbesondere wenn es um solche Basis Klassen geht.


Es gibt da einen guten Spruch: Perfektion ist nicht, wenn man nichts mehr hinzufügen, sondern wenn man nichts mehr wegnehmen kann.
Alles möglichst generisch machen zu wollen ist eine typische Falle, in der Leute tappen, die generische Programmierung noch nicht so lang verwendet haben. Da schaut generischer Code leicht aus wie ein Shiny New Hammer, und alle Probleme auf einmal wie generische Nägel.

Schreibst du eine allgemeine Mathematiksoftware wie Mathematica oder Maple? Nein? Dann lass es. Standardisier alles auf Radians. Was anderes wirst du sehr selten brauchen (am ehesten in UIs und Skripte, und davor kann man deg2rad-Funktionen schalten).
~dv();

Werbeanzeige