Gewusst wie: Verwenden von Eigenschaften in C++/CLI
Artikel
In diesem Artikel wird die Verwendung von Eigenschaften in C++/CLI erläutert.
Grundlegende Eigenschaften
Für grundlegende Eigenschaften , die lediglich ein privates Datenmememm zuweisen und abrufen, müssen Sie die Accessorfunktionen zum Abrufen und Festlegen nicht explizit definieren, da der Compiler diese automatisch bereitstellt, wenn nur der Datentyp der Eigenschaft angegeben wird. Dieser Code veranschaulicht eine grundlegende Eigenschaft:
In diesem Codebeispiel wird gezeigt, wie eine statische Eigenschaft deklariert und verwendet wird. Eine statische Eigenschaft kann nur auf statische Member ihrer Klasse zugreifen.
Eine indizierte Eigenschaft macht in der Regel eine Datenstruktur verfügbar, auf die mithilfe eines tiefgestellten Operators zugegriffen wird.
Wenn Sie eine indizierte Standardeigenschaft verwenden, können Sie nur auf die Datenstruktur zugreifen, indem Sie auf den Klassennamen verweisen. Wenn Sie jedoch eine benutzerdefinierte indizierte Eigenschaft verwenden, müssen Sie den Eigenschaftennamen angeben, um auf die Datenstruktur zuzugreifen.
Obwohl die abstrakten und versiegelten Schlüsselwörter in der ECMA-C++/CLI-Spezifikation angegeben sind, können Sie sie für den Microsoft C++-Compiler weder für triviale Eigenschaften noch für die Eigenschaftsdeklaration einer nicht trivialen Eigenschaft angeben.
Um eine versiegelte oder abstrakte Eigenschaft zu deklarieren, müssen Sie eine nicht triviale Eigenschaft definieren und dann das abstract Schlüsselwort sealed für die Get- und Set-Accessorfunktionen angeben.
Sie können multidimensionale Eigenschaften verwenden, um Eigenschaftsaccessormethoden zu definieren, die eine nicht standardmäßige Anzahl von Parametern verwenden.
C++
// mcppv2_property_5.cpp// compile with: /clr
ref classX {double d;
public:
X() : d(0) {}
property double MultiDimProp[int, int, int] {
doubleget(int, int, int){
return d;
}
voidset(int i, int j, int k, double l){
// do something with those ints
d = l;
}
}
property double MultiDimProp2[int] {
doubleget(int){
return d;
}
voidset(int i, double l){
// do something with those ints
d = l;
}
}
};
intmain(){
X ^ MyX = gcnew X();
MyX->MultiDimProp[0,0,0] = 1.1;
System::Console::WriteLine(MyX->MultiDimProp[0, 0, 0]);
}
Output
1.1
Überlastung von Eigenschaftsaccessoren
Das folgende Beispiel zeigt, wie indizierte Eigenschaften überladen werden.
Erfahren Sie, wie Sie Schreib-, Schreib- und Schreibschutzklasseneigenschaften mithilfe von Eigenschaftenaccessoren und Zugriffsmodifizierern implementieren und methoden und Erweiterungsmethoden für eine Klasse implementieren.