私はこのようなクラスを持っています:
public ref class Test
{
public:
property int MyProperty;
};
これは機能します。ここで、MyProperty の実装を CPP ファイルに移動したいと考えています。これを行うと、プロパティが既に定義されているというコンパイラ エラーが発生します。
int Test::MyProperty::get() { return 0; }
これの適切な構文は何ですか?
私はこのようなクラスを持っています:
public ref class Test
{
public:
property int MyProperty;
};
これは機能します。ここで、MyProperty の実装を CPP ファイルに移動したいと考えています。これを行うと、プロパティが既に定義されているというコンパイラ エラーが発生します。
int Test::MyProperty::get() { return 0; }
これの適切な構文は何ですか?
ヘッダーで、宣言を次のように変更します。
public ref class Test
{
public:
property int MyProperty
{
int get();
void set( int );
}
private:
int m_myProperty;
};
次に、cppコードファイルに次のように定義を記述します。
int Test::MyProperty::get()
{
return m_myProperty;
}
void Test::MyProperty::set( int i )
{
m_myProperty = i;
}
エラーが表示される理由は、コンパイラが実装を生成する簡単なプロパティを宣言したためです。しかし、その後、実装も明示的に提供しようとしました。参照: http: //msdn.microsoft.com/en-us/library/windows/apps/hh755807 (v = vs.110).aspx
オンラインの例のほとんどは、クラス定義に直接実装を示しているだけです。
get
クラス定義では、プロパティをユーザー宣言とset
メソッドを使用してプロパティとして宣言する必要があります。省略形のプロパティにすることはできません。
public ref class Test
{
public:
property int MyProperty { int get(); void set(int); }
};
次に、cppファイルでメソッドget()
とset()
メソッドを定義できます。
int Test::MyProperty::get()
{
return 42;
}
void Test::MyProperty::set(int)
{
// set the value
}