3

c++でc#のようなプロパティを持つことは可能ですか? 最初はそうではないと思っていましたが、これがあると主張する情報源は見つかりませんでした.

しかし、ヘッダー ファイル (最初は c# で記述されているように見えますが、実際には c++ です) を見つけました。そのファイルでは、プロパティ キーワードを使用してプロパティを宣言しているようです。

property Boolean AlphaToCoverageEnable
{
    Boolean get()
    {
        return alphaToCoverageEnable;
    }

    void set(Boolean value)
    {
        alphaToCoverageEnable = value;
    }
}

これをEclipseで使用しようとしましたが、気に入らなかった...これを行う方法はありますか? インクルードする必要があるヘッダー、またはコンパイル方法に関係するものはありますか?

私が見つけたファイル: https://dl.dropbox.com/u/847423/D3D10Structs.h

4

4 に答える 4

2

C++/CLI を見ています。これは、.Net サポートを追加する C++ の Microsoft 拡張機能です。

C++ はプロパティをサポートしていませんが、演算子のオーバーロードを悪用することで、プロパティのように動作するものを作成できます。

たとえば、http://msdn.microsoft.com/en-us/magazine/cc534994.aspxを参照してください。

于 2013-02-08T16:47:13.787 に答える
1

簡単に言えば、C++ (言語) は C# スタイルのプロパティをサポートしていません。プロパティは、setter と getter の 2 つの関数で実装されます。C# のプロパティでさえ、CLI レベルでセッター/ゲッター関数に変換されます。

C++ 言語に対する Microsoft C++/CLI 拡張機能は C# スタイルのプロパティをサポートしているようですが、ANSI 標準の C++ 言語はサポートしていません。

于 2013-02-08T16:46:56.390 に答える
0

これは C++/CLI であり、標準の C++ ではありません。C++/CLI は、.NET の概念とシームレスに連携することを目的としているため、プロパティをサポートしています。

public value struct BlendDescriptionクラス宣言で直接伝えることができます- value structC++/CLI 値型 ( structC# で) を定義します。

于 2013-02-08T16:47:01.333 に答える
0

この CodeGuru プロジェクトのコードを使用しました: http://www.codeproject.com/Articles/118921/C-Properties

それを使用して、これを含む「properties.h」ファイルを作成しました。

#define PROPERTY(t,n)  __declspec( property 
( put = property__set_##n, get = property__get_##n ) ) t n;\
typedef t property__tmp_type_##n
#define READONLY_PROPERTY(t,n) __declspec( property (get = property__get_##n) ) t n;\
typedef t property__tmp_type_##n
#define WRITEONLY_PROPERTY(t,n) __declspec( property (put = property__set_##n) ) t n;\
typedef t property__tmp_type_##n
#define GET(n) property__tmp_type_##n property__get_##n() 
#define SET(n) void property__set_##n(const property__tmp_type_##n& value)   

プロパティの例は次のとおりです。

PROPERTY(LatLonAltTuple, LatLonAlt);
GET(LatLonAlt) { return m_LatLonAlt; }
SET(LatLonAlt) { m_LatLonAlt = value; }
于 2013-02-08T16:50:57.363 に答える