2012-05-07 10 views
8

私はこのようなクラスを持っている:.cppファイルに実装されたC++/CX WinRTプロパティを宣言する構文は何ですか?

public ref class Test 
{ 
public: 
    property int MyProperty; 
}; 

これは動作します。今私はMyPropertyの実装をCPPファイルに移したいと思っています。私はこれを行うときに、プロパティがすでに定義されていることを、コンパイラのエラーを取得:

int Test::MyProperty::get() { return 0; } 

このための適切な構文は何ですか?

答えて

18

に宣言を変更:

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

ほとんどの例では、クラス定義に直接実装が示されています。

4

クラス定義では、ユーザーが宣言した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 
} 
関連する問題