2016-12-25 6 views
1

__propertiesていますか? ...例えば。C++ Builderの "__property" のデータの受け渡し

class TMyClass 
{ 
private: 
    int FMyFoo1; 

    int GetMyFoo2(); 
    void SetMyFoo2(int AMyFoo2); 

public: 
    __property int MyFoo1 = {read=FMyFoo1, write=FMyFoo1}; 
    __property int MyFoo2 = {read=GetMyFoo2, write=SetMyFoo2}; 
}; 

また、あなたは唯一のクランベースのコンパイラと

__property int &MyFoo = {read=FMyFoo}; 

のように、__properties&演算子を追加することができます。これの背後にある意味は何ですか?

+1

プロパティ値*を別の関数に渡すかどうか尋ねられますか*は値または参照によって渡されますか?そうであれば、プロパティは値*で扱われます。デバッガでコンパイラが生成したコードを見て、それを確認できました。 '&'は、データ型の一部であり、プロパティ自体ではありません。 '__property int&MyFoo'は' __property int&MyFoo'と同じです。しかし、このような参照型のプロパティを宣言することは実際には意味がありません。 –

+0

これは、ユーザーの関数**への参照としてプロパティデータを渡すようにコンパイラに指示することができるという素早い考えに基づいていました。 Bcc32cがそれについて文句を言っていないとき、私は自分の前提が正しいことを自分自身が確認した。 – FlKo

+0

... *他の**機能への参照... * – FlKo

答えて

0

レミールボーはコメントで私の質問に答えた:

__property DataType PropName = {read=FMember, write=FMember}; 

のようなプロパティを宣言

データ型を基準と宣言されていないにもかかわらず、FMemberへの直接アクセスを提供しています。あなたが入力としてデータ型&参照を取る機能があり、関数にPROPNAMEを渡すのであれば、コンパイラは関数への参照によってFMemberを最適化し、を渡すことができます。

関連する問題