Geometrische Gebilde, Parameter aber nicht vom Typ int

noel1982

Mitglied
Hallo!

Ich will z.B. mit Rectangle(x1,y1,x2,y2) ein Rechteck zeichnen, oder mit MoveTo/LineTo eine Linie...aber die Parameter sind bei mir nicht vom Typ int!
Welche Möglichkeiten habe ich denn da sonst noch?

Vielen Dank!
 
Äh, von irgendeinem numerischen Typ müssen deine Parameter ja sein (float oder double?). Dann kannst du einfach auf int casten:

int iParam = (int)floatParam;

Es gibt da auch noch die c++-cast-operatoren, aber die sind meiner sturen Meinung nach zu bescheuert einzutippen:

int iParam = static_cast<int>( floatParam );
 
Es gibt da auch noch die c++-cast-operatoren, aber die sind meiner sturen Meinung nach zu bescheuert einzutippen:

int iParam = static_cast<int>( floatParam );
Die sind aber dennoch sicherer, meiner genauso sturen Meinung nach. ;)

@noel1982:
Kann es sein, dass du POINT- oder CPoint-Parameter meinst?
 
Also bei mir sind die vom Typ double...aber er wandelt die scheinbar von selbst um und gibt eine Warnung aus...oder sollte ich sie sicherheitshalber selbst umwandeln?
 
Apropos STUR:
Also ich finden einen dynamic_cast-Operator teilweise unerläßlich in C++, gerade dann, wenn es um Polymorphe Objekte geht.

Daniel
 
Die Warnung kommt vom automatischen Umwandeln, da dabei die Präzision teilweise verloren geht (keine Nachkommastellen). Mit der Warnung will dich der Compiler da extra drauf hinweisen. Um dem Compiler mitzuteilen, dass du das verstanden hast und das so gewollt ist, machst du da einfach die casts rein. Warnung weg, Compiler glücklich, Programmierer auch glücklich.

Wegen meinem Gemeckere wegen der C++-cast-operatoren: Ich sehe ein, dass die einen Sinn haben und die Unterscheidung ist auch recht sinnvoll, allerdings ist damit Mehrarbeit verbunden. Generell scheinen in der OOP-ist-heilig-Liga des öfteren die leichte Verständlichkeit bzw. Lesbarkeit flöten zu gehen (warum muss man sich mit for_each, begin und end rumschlagen, wenn man einen popligen String in Grossbuchstaben umwandeln will, wieso nicht einfach std::string::toupper. Tut doch keinem weh.)
 
Zurück