私はこのREFクラスを持っている:集計初期化を使用してC++/cxクラスを初期化する方法は?
namespace N
{
public ref class S sealed
{
public:
property Platform::String^ x;
};
}
私が集計初期化子を持つ場所でそれを初期化するにはどうすればよいですか?
N::S s1 = { %Platform::String(L"text") };
コンパイラは
エラーC2440は言う:: は、私が試してみました 'N :: S'
に '初期化子リスト' から変換することはできません: '初期化します'また:
N::S s1 { %Platform::String(L"text") };
エラー:
エラーC2664: 'N :: S :: S(CONST N :: S%)': からの引数1を変換することはできません 'プラットフォーム::文字列^' に 'CONST N :: S%'
は
これは、このような標準C++で大幅に機能します:
struct T
{
wstring x;
};
T x { L"test" };
私はここにコンストラクタを使用する必要はありません。
refクラスはinterop型です。プロパティは実際にはクラス内のフィールドではありません。 C++プログラマーのための便利な構文砂糖。しかし、イニシャライザリストと互換性のない値を初期化するには、関数(set_x)を呼び出す必要があります。 's1.x =" test ";'が必要な場合、コンパイラは自動的にPlatform :: Stringを作成し、それをインタフェースメソッド呼び出しに変換します。 –