AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Beste Umsetzung für read/write von Attributen in C++
Thema durchsuchen
Ansicht
Themen-Optionen

Beste Umsetzung für read/write von Attributen in C++

Ein Thema von Assarbad · begonnen am 28. Aug 2004 · letzter Beitrag vom 31. Aug 2004
Antwort Antwort
Assarbad
(Gast)

n/a Beiträge
 
#1

Beste Umsetzung für read/write von Attributen in C++

  Alt 28. Aug 2004, 16:34
Hiho,

wenn ich soetwas wie Heading in diesem Listing in C++ verwirklichen will, wie löst man das am besten?

Delphi-Quellcode:
type

  THeading = 0..359;
  TCompass = class(TControl)
  private
    FHeading: THeading;
    procedure SetHeading(Value: THeading);
  published
    property Heading: THeading read FHeading write SetHeading;
    ...
  end;
Definitiv geht's mit read, aber beide zugleich sieht doch mau aus, oder?
  Mit Zitat antworten Zitat
Eisenherz

Registriert seit: 10. Jun 2002
Ort: Stadeln
33 Beiträge
 
Delphi 5 Professional
 
#2

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 11:35
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.
aloa Eisenherz
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 11:49
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...
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 12:04
Die 'Properties' gibt es nur in 'managed C++' (die Zuordnung wird durch eine Nomenklatur automatisiert).
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#5

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 12:09
Zitat von NicoDE:
Die 'Properties' gibt es nur in 'managed C++' (die Zuordnung wird durch eine Nomenklatur automatisiert).
Zitat von MSDN Library von Visual Studio 6:
Microsoft Specific —>

__declspec( property( get=get_func_name ) ) declarator

__declspec( property( put=put_func_name ) ) declarator

__declspec( property( get=get_func_name, put=put_func_name ) ) declarator

This attribute can be applied to non-static “virtual data members„ in a class or structure definition. The compiler treats these “virtual data members„ as data members by changing their references into function calls.

When the compiler sees a data member declared with this attribute on the right of a member-selection operator (“.„ or “->“), it converts the operation to a get or put function, depending on whether such an expression is an l-value or an r-value. In more complicated contexts, such as “+=“, a rewrite is performed by doing both get and put.

This attribute can also be used in the declaration of an empty array in a class or structure definition. For example:

__declspec(property(get=GetX, put=PutX)) int x[];
The above statement indicates that x[] can be used with one or more array indices. In this case, i=p->x[a][b] will be turned into i=p->GetX(a, b), and p->x[a][b] = i will be turned into p->PutX(a, b, i);

END Microsoft Specific
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#6

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 12:20
OK, dann hab ich wohl was verpasst (nunja nicht wirklich, weil 'Microsoft specific' ).
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#7

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 12:33
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:
class MyClass
{
    int value;
public:
    int Value() { return value; }
    void Value(int newValue) { value = newValue; }
}
und dann benutzen wie folgt:
Code:
MyClass mc;
mc.value(1);
cout << mc.value();
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.
Ich weiß nicht mehr, ob das dieser Thread war, aber da stellt auch einer seine Template-Bibliothek für Eigenschaften vor. Auch eine Möglichkeit.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 12:43
Ich finde get/set gar nicht soooo schlimm.
In C# würde es ungefähr so aussehen (soory, bin kein C++ crack ):
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...");
            }
        }
    }
}
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#9

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 30. Aug 2004, 15:22
Zitat von OregonGhost:
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.
Eben, C++, nicht irgendeinen Dialekt. Das Programm soll auf beliebigen Plattformen laufen.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#10

Re: Beste Umsetzung für read/write von Attributen in C++

  Alt 31. Aug 2004, 00:41
Zitat von NicoDE:
OK, dann hab ich wohl was verpasst (nunja nicht wirklich, weil 'Microsoft specific' ).
Naja, wenn man C++ sagt, geht man ja auch nicht davon aus, daß "proprietary extensions" besprochen werden *g* ich zumindest nicht.

@Nico: Das IDA 4.7-Update ist sehr "lecker" *mjam mjam*
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz