Zwei Funktionen von C# nach C++ übersetzen
-
Hi, wie würdet ihr die folgenden beiden Funktionen nach C++ übersetzen. In erster Linie würde ich gerne wissen ob ihr die Double Werte "oldMaximum" und "newMaximum" als Zeiger oder als Objekt übergeben würdet.
protected virtual void OnMaximumChanged(double oldMaximum, double newMaximum) { } private static void OnMaximumChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { RangeBase element = (RangeBase) d; element.OnMaximumChanged((double) e.OldValue, (double) e.NewValue); }
-
Als Objekte.
Die zweite Funktion kann man nicht so direkt nach C++ übersetzen, das ist WPF.
-
Lol, einfach nach protected und private einen Doppelpunkt setzen, dann ist das korrekte C++-Syntax (angenommen die Gegebenheiten sind richtig, verschiedene Konvertierbarkeiten, usw.).

-
Hacker schrieb:
Lol, einfach nach protected und private einen Doppelpunkt setzen, dann ist das korrekte C++-Syntax (angenommen die Gegebenheiten sind richtig, verschiedene Konvertierbarkeiten, usw.).

Syntaktisch geht das vielleicht, aber semantisch hauts nicht hin. Denn RangeBase ist von DependencyObject abgeleitet.
-
Hacker schrieb:
Lol, einfach nach protected und private einen Doppelpunkt setzen, dann ist das korrekte C++-Syntax (angenommen die Gegebenheiten sind richtig, verschiedene Konvertierbarkeiten, usw.).

Na, wenn das so einfach wäre hätte ich sicher nicht hier gepostet ;). Die Objekte (mal vom Double abgesehen sind nämlich nicht kopierbar).
Vielleicht hätte ich lieber gleich das hier gepostet:protected: virtual void __gc* OnMaximumChanged(Double __gc* oldMaximum, Double __gc* newMaximum) { } private: static void __gc* OnMaximumChanged(DependencyObject __gc* d, DependencyPropertyChangedEventArgs __gc* e) { RangeBase __gc* element = *static_cast<__box RangeBase*>(d); element->OnMaximumChanged(*static_cast<__box Double*>(e->OldValue), *static_cast<__box Double*>(e->NewValue)); }So hätte ich das jetzt auch gelöst. Denn mal angenommen es handelt sich nicht um einen Double sondern um einen Style dann müsste ich diesen sowieso als Zeiger übergeben. Ich wollte jetzt halt wissen, ob man konsequenter Weise nach diesem Schema auch double als Zeiger übergibt oder vielleicht lieber doch als Objekte.
-
Student83 schrieb:
protected: virtual void __gc* OnMaximumChanged(Double __gc* oldMaximum, Double __gc* newMaximum) { } private: static void __gc* OnMaximumChanged(DependencyObject __gc* d, DependencyPropertyChangedEventArgs __gc* e) { RangeBase __gc* element = *static_cast<__box RangeBase*>(d); element->OnMaximumChanged(*static_cast<__box Double*>(e->OldValue), *static_cast<__box Double*>(e->NewValue)); }Öhm das ist kein c++ das sieht eher nach c++/CLI aus. Und wiso willst du das nach "C++" (eher c++/CLI) konvertieren?
-
firefly schrieb:
Student83 schrieb:
protected: virtual void __gc* OnMaximumChanged(Double __gc* oldMaximum, Double __gc* newMaximum) { } private: static void __gc* OnMaximumChanged(DependencyObject __gc* d, DependencyPropertyChangedEventArgs __gc* e) { RangeBase __gc* element = *static_cast<__box RangeBase*>(d); element->OnMaximumChanged(*static_cast<__box Double*>(e->OldValue), *static_cast<__box Double*>(e->NewValue)); }Öhm das ist kein c++ das sieht eher nach c++/CLI aus. Und wiso willst du das nach "C++" (eher c++/CLI) konvertieren?
Du bist ja ein ganz schlauer. Nicht nur, dass du wiederholst was jedem klar war, du quotest auch noch den falschen Code

-
Ist das nicht sogar noch Managed C++, die Vorstufe von C++/CLI, die heute erst recht keiner mehr benutzen will?
-
Hacker schrieb:
Du bist ja ein ganz schlauer. Nicht nur, dass du wiederholst was jedem klar war, du quotest auch noch den falschen Code

Tut er nicht

-
Michael E. schrieb:
Hacker schrieb:
Du bist ja ein ganz schlauer. Nicht nur, dass du wiederholst was jedem klar war, du quotest auch noch den falschen Code

Tut er nicht

Tut er doch! :p
Syntaktisch ist das C++. Mit ein Paar Typedefs...
-
Hacker schrieb:
Michael E. schrieb:
Hacker schrieb:
[...] du quotest auch noch den falschen Code

Tut er nicht

Tut er doch! :p
Bist du also der Meinung, dass der erste Code C++/CLI ist oder wie soll man dich verstehen?
Syntaktisch ist das C++. Mit ein Paar Typedefs...

Hast du schonmal C++/CLI gesehen?
-
Michael E. schrieb:
Hacker schrieb:
Michael E. schrieb:
Hacker schrieb:
[...] du quotest auch noch den falschen Code

Tut er nicht

Tut er doch! :p
Bist du also der Meinung, dass der erste Code C++/CLI ist oder wie soll man dich verstehen?
Hä? Der gequotete Code ist C++- mit ein paar Typedefs...

Michael E. schrieb:
Syntaktisch ist das C++. Mit ein Paar Typedefs...

Hast du schonmal C++/CLI gesehen?
Nein.

-
Hacker schrieb:
Michael E. schrieb:
Syntaktisch ist das C++. Mit ein Paar Typedefs...

Hast du schonmal C++/CLI gesehen?
Nein.

Der erste gepostete code ist C# und nicht c++/CLR. Nur der zweite ist zugegeben ein vorläufer von C++/CLR.
in c++/CLR würde der Code so aussehen:
protected: virtual void OnMaximumChanged(Double^ oldMaximum, Double^ newMaximum) { } private: static void OnMaximumChanged(DependencyObject^ d, DependencyPropertyChangedEventArgs^ e) { RangeBase^ element = (RangeBase^)d; element->OnMaximumChanged((Double^)e->OldValue, (Double^)e->NewValue); }siehe auch
https://en.wikipedia.org/wiki/C%2B%2B/CLI für den vergleich zwischen "Managed C++" und C++/CLRAber das ganze erklärt immer noch net wiso Student83 den C# code nach C++ konvertieren möchte
-
Hacker schrieb:
Michael E. schrieb:
Hast du schonmal C++/CLI gesehen?
Nein.

Dann hol das besser nach, bevor du dich noch mehr blamierst.
-
@Hacker
Könntest du vielleicht mal in EINEM EINZIGEN verdammten Thread die Fresse halten?
Du musst nicht alles mit deinen sinnlosen Beiträgen vollspammen.
-
Huch - war Hackers account mal gelöscht? Anmeldedatum 29.5.2012, 174 posts - der spamt doch schon ne halbe Ewigkeit...
-
firefly schrieb:
in c++/CLR würde der Code so aussehen:
protected: virtual void OnMaximumChanged(Double^ oldMaximum, Double^ newMaximum) { }Es heisst immer noch C++/CLI (nicht CLR).
Und kein C++/CLI Programmierer der noch bei Sinnen ist würde auf die Idee kommen hier nen Double als Referenz zu übergeben.@PiMalDaumen
Ja, war mal gelöscht.
-
hustbaer schrieb:
firefly schrieb:
in c++/CLR würde der Code so aussehen:
protected: virtual void OnMaximumChanged(Double^ oldMaximum, Double^ newMaximum) { }Es heisst immer noch C++/CLI (nicht CLR).
Und kein C++/CLI Programmierer der noch bei Sinnen ist würde auf die Idee kommen hier nen Double als Referenz zu übergeben.ups da habe ich mich vertan mit dem namen *g*
Und das mit dem Double stimmt, eigentlich hätte es besser:protected: virtual void OnMaximumChanged(double oldMaximum, double newMaximum) { }heißen sollen
-
Des weiteren würde ich C++/CLI selbst nicht verwenden, wenn in eine Anwendung mit .Net erstellt werden soll. Da lieber dann direkt C#. C++/CLI habe ich bisher nur verwendet um Adapter libs zwischen nativen und managed code zu erstellen.
-
Man sollte nicht die erste Antwort von Mechanics vergessen - der Code benutzt WPF Klassen und damit kann man den Code sicherlich syntaktisch nach C++ portieren, aber nutzbar ist er dadurch trotzdem noch lange nicht. Wenn Student83
wirklich C++ will und nicht C++/CLI, dann ist die ganze Mühe umsonst (und die Diskussion im falschen Forum).Und selbst C++/CLI ist total unsinnig für WPF, da man XAML nicht nutzen kann, und damit gar nicht richtig in WPF programmieren kann.