2011-02-06 14 views

答えて

3

実際にはC++/CLIに接続されていました(アンマネージC++は実際にはプロパティの概念を持っていません)。

プロパティは、フィールドと同じように動作するが、getterおよびsetterアクセサ関数によって内部的に処理されるエンティティです。スカラープロパティ(フィールドのように動作する場所)またはインデックス付きプロパティ(配列のように動作する場所)にすることができます。古い構文では、プロパティを実装するためにgetterメソッドとsetterメソッドをコード内に直接指定する必要がありました。 C++/CLIでは、構文はよりC#であり、記述しやすくなりました。この記事からの引用

http://www.codeproject.com/KB/mcpp/CppCliProperties.aspx

はまた、C++/CLIでの特性にMSDNを参照してください。

サンプルコード:

private: 
    String^ lastname; 

public: 
    property String^ LastName 
    { 
     String^ get() 
     { 
     // return the value of the private field 
     return lastname; 
     } 
     void set(String^ value) 
     { 
     // store the value in the private field 
     lastname = value; 
     } 
    } 
+0

あなたは次のように書いています: "ロパティはフィールドのように振る舞う実体です"。フィールドとは何ですか? –

+0

@lital:フィールドは 'class'または' struct'で直接宣言された変数です。任意の型( 'String'、' bool'、 'int'など)にすることができます。フィールドを含む型( 'class'または' struct')のメンバである変数であるため、 "メンバ変数"と呼ばれるフィールドが表示されることがあります。プロパティのポイントは、これらのプライベートフィールドを公開して、オブジェクト指向の設計原則に準拠させることです。 –

+0

フィールドは、クラス内の任意のメソッドからアクセス可能な変数です。しかし、あなたがクラスであるかを尋ねる前に、C++でOOPに関するいくつかの記事を読むことをお勧めします。 –

1

うんは確かにこれは、マネージC++コードまたはC++/CLIのMicrosoftのバージョンです。今すぐGet &メソッドを書く必要があるだけでなく、それをプロパティとして定義する必要もあります。 プロパティの「読み取り専用」と「書き込み専用」のバージョンがきちんときちんと記述されていることを、私が余計にタイプするのが嫌いと言っています。

ただし、un-managed C++では不要です。あなたはクラスで書くことができる。例えば

(正確に同じことを行います!):

std::string GetLastName() const { return lastname;} 
void SetLastName(std::string lName) { lastname = lName;} 

「のconstは、」それはGET 'を確認しましたが、読み取り専用、およびセットが明確でした。プロパティを定義したり、文字列^ std :: stringの混乱を追加する必要はありません。

関連する問題