![]() |
Beste Umsetzung für read/write von Attributen in C++
Hiho,
wenn ich soetwas wie Heading in diesem Listing in C++ verwirklichen will, wie löst man das am besten?
Delphi-Quellcode:
Definitiv geht's mit read, aber beide zugleich sieht doch mau aus, oder?
type
THeading = 0..359; TCompass = class(TControl) private FHeading: THeading; procedure SetHeading(Value: THeading); published property Heading: THeading read FHeading write SetHeading; ... end; |
Re: Beste Umsetzung für read/write von Attributen in C++
Mit welchem C++ arbeitest du?
Wenn du mit dem C++Builder arbeitest, dann kannst du das 1 zu 1 umsetzen, siehe Schlüsselwort __property Wenn du mit Ansi C++ arbeitest, dann schreibst du einfach eine public Getter- und Settermethode. |
Re: Beste Umsetzung für read/write von Attributen in C++
Visual C++ unterstützt ebenfalls Properties, ich glaube, das Schlüsselwort heißt auch was mit property. Sei dir aber dessen bewusst, dass es in der Sprache ISO-C++ keine Eigenschaften gibt und du dich mit dem Nutzen dieser Funktionen an einen Compiler bindest.
Alternativ kannst du C++.NET verwenden, da gibt es natürlich Eigenschaften... |
Re: Beste Umsetzung für read/write von Attributen in C++
Die 'Properties' gibt es nur in 'managed C++' (die Zuordnung wird durch eine Nomenklatur automatisiert).
|
Re: Beste Umsetzung für read/write von Attributen in C++
Zitat:
Zitat:
|
Re: Beste Umsetzung für read/write von Attributen in C++
OK, dann hab ich wohl was verpasst (nunja nicht wirklich, weil 'Microsoft specific' :)).
|
Re: Beste Umsetzung für read/write von Attributen in C++
Naja, ob nun Microsoft specific oder Borland specific - beides nicht so prickelnd. ISO-C++ hat nunmal keine Eigenschaften. Also entweder man schreibt plattformunabhängigen Code, indem man die Eigenschaften durch Getter/Setter-Methoden ersetzt (gegebenenfalls kann man da ein paar schmutzige Makros für schreiben (C; ), oder man muss sich halt an den Borland- oder Microsoft-Compiler anschmiegen.
Übrigens gibt es noch eine verbreitete Syntax für C++-"Eigenschaften", wie ich kürzlich in einer Diskussion auf Gamedev.net erfuhr. Wenn die Eigenschaft z.B. Value heißt und int ist:
Code:
und dann benutzen wie folgt:
class MyClass
{ int value; public: int Value() { return value; } void Value(int newValue) { value = newValue; } }
Code:
Das kommt zumindest ungefähr der Benutzung von Eigenschaften gleich, auch wenn man nicht so schöne Syntax hat. Ist aber fast noch ein wenig schöner als get/set.
MyClass mc;
mc.value(1); cout << mc.value(); Ich weiß nicht mehr, ob das ![]() |
Re: Beste Umsetzung für read/write von Attributen in C++
Ich finde get/set gar nicht soooo schlimm. ;)
In C# würde es ungefähr so aussehen (soory, bin kein C++ crack :duck: ):
Code:
public class Compass : System.Windows.Forms.Control
{ private Int16 fHeading; public Int16 Heading { get { return fHeading; } set { if ( value >= 0 && value < 360 ) fHeading = value; else { throw new System.IndexOutOfRangeException("Some message..."); } } } } |
Re: Beste Umsetzung für read/write von Attributen in C++
Zitat:
|
Re: Beste Umsetzung für read/write von Attributen in C++
Zitat:
@Nico: Das IDA 4.7-Update ist sehr "lecker" *mjam mjam* :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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-2025 by Thomas Breitkreuz