3

我正在尝试创建一个支持 windows phone 8 的运行时组件。程序的简要说明如下:

  1. 应用程序 (C#) 将在 ref struct A 中填充一些数据
  2. 它将使用 ref struct A 的对象调用 ref 类 VVoiP 的 init API。
  3. Ref 类 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 回答