3

Windows Phone 8 をサポートするランタイム コンポーネントを作成しようとしています。プログラムの簡単な説明は次のとおりです。

  1. アプリケーション (C#) は、ref struct A にいくつかのデータを入力しようとしています
  2. ref struct A のオブジェクトで ref クラス VVoiP の init API を呼び出します。
  3. 参照クラス VVoip は、複数のインスタンスを持つことができるように、クラス B のオブジェクトの配列を持つ必要があります。

C# コード:

using TestWRC;
namespace TestPrj
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            VVoIP v1 = new VVoIP();
            A a1 = new A();
            a1.a = 10;
            v1.init(a1);
        }
    }
}

C++ コード:

    namespace TestWRC
    {
    public ref struct A sealed
        {
    public:
        property int a;
    };

    struct B {
        A^ A_obj;
    };

    public ref class VVoIP sealed
    {
    private:
        B array[3];   /* Array of object to have multiple instance */

    public:
        void init(A a1);
    };
    }


using namespace TestWRC;
    void VVoIP::init(A a1)
    {
    array[0].A_obj->a = a1.a;  /* Filling local array with initialized data*/
    }

上記のコードから次のエラーが発生します。

エラー C3992: 'init': パブリック メンバーの署名に無効な型 'TestWRC::A' が含まれています

私は Windows Phone 8 を初めて使用します。このエラーの意味と、これを修正する方法を教えてください。前もって感謝します。

4

1 に答える 1

3

公開署名では、これが Windows ランタイム参照カウント オブジェクトであることを指定する必要があるため、ハット (^) 構文で宣言する必要があります。

void init(A^ a1);
于 2013-02-28T10:27:30.010 に答える