![]() |
[C++] Was geschieht hier genau?
Code:
Also ich verstehe es nur 'halb'. Ich nehme zz an folgendes richtig zu verstehen:
struct vec2 {
float x, y; vec2(float x, float y) : x(x), y(y) {} }; vec2 operator + (vec2 a, vec2 b) { return vec2(a.x + b.x, a.y + b.y); } vec2 operator - (vec2 a, vec2 b) { return vec2(a.x - b.x, a.y - b.y); } vec2 operator * (float s, vec2 a) { return vec2(s * a.x, s * a.y); } vec2 ist definiert als record mit variablen float x und y. vec2 [operator] vec2 returned einfach x und y addiert/subtrahiert von 2 vectoren bzw. multiplikation s mit x und y eines einzigen vectors. vec2(float x, float y) : x(x), y(y) {} Da bin ich mir nicht sicher.. Soll das ein Konstruktor sein? Bitte erklären danke :) |
AW: [C++] Was geschieht hier genau?
Ja,
Code:
ist in der Tat der Constructor, wobei der etwas seltsam aussehende Teil nach dem : eine sogenannte "Initializer List" ist, die die privaten member Variablen x und y mit den Werten der Constructor-Parameter x und y initialisiert. In den { } könnte noch weiterer Code stehen, welcher nach der Konstruktion des Objekts ausgeführt wird.
vec2(float x, float y) : x(x), y(y) {}
Die Operatoren + und - sind überladen, damit man hinterher im Code z.b. einfach Vec1 + Vec2 schreiben kann, um eine Vektoraddition durchzuführen. Analog dazu der Operator *, welcher eine Skalarmultiplikation ausführt (Vec1 * 203). |
AW: [C++] Was geschieht hier genau?
Code:
Da wird der "+"-Operator überladen sodass er mit dem record "vec2" funktioniert.
vec2 operator + (vec2 a, vec2 b) {
return vec2(a.x + b.x, a.y + b.y); } Das gleiche gibts dann noch für - und *. |
AW: [C++] Was geschieht hier genau?
Code:
Also wäre das das gleiche, okay vielen Dank, hätte ich auch selbst drauf kommen können >.<
struct vec2 {
float x, y; vec2(float x, float y) { x = x; y = y; } }; |
AW: [C++] Was geschieht hier genau?
Zitat:
Code:
struct vec2 {
float x, y; vec2(float x, float y) { this->x = x; this->y = y; } }; |
AW: [C++] Was geschieht hier genau?
Delphi-Quellcode:
Bei dem multyply gibt es eine Fehlermeldung, eine Ahnung woran das liegt? (#36h awake braindead)
type
vec2 = packed record x,y:double; constructor Create(xi, yi: Double); class operator add(v1, v2: vec2): vec2; class operator subtract(v1, v2: vec2): vec2; class operator multyply(d : double; v1 : vec2): vec2; end; TMainFrm = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var MainFrm: TMainFrm; implementation {$R *.dfm} constructor vec2.Create(xi, yi: Double); begin x := xi; y := yi; end; class operator vec2.add(v1, v2: vec2): vec2; begin Result.x := v1.x + v2.x; Result.y := v1.y + v2.y; end; class operator vec2.subtract(v1, v2: vec2): vec2; begin Result.x := v1.x - v2.x; Result.y := v1.y - v2.y; end; class operator vec2.multyply(d : double; v1 : vec2): vec2; begin Result.x := d * v1.x; Result.y := d * v1.y; end;
Delphi-Quellcode:
[dcc32 Fehler] UnitMain.pas(15): E2393 Ungültige Operatordeklaration
[dcc32 Fehler] UnitMain.pas(15): E2029 ',' oder ')' erwartet, aber ':' gefunden [dcc32 Fehler] UnitMain.pas(15): E2086 Typ 'vec2' ist nicht vollständig definiert [dcc32 Fehler] UnitMain.pas(16): E2029 Typ erwartet, aber 'END' gefunden lg |
AW: [C++] Was geschieht hier genau?
Zitat:
|
AW: [C++] Was geschieht hier genau?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz