使用Microsoft接口定义语言处理一维数组

问题描述

我正在尝试在c ++ winRT组件中使用一维数组

Class.idl

namespace MyClass
{
    [default_interface]
    runtimeclass Class
    {
        Class();
        String[] aaa(String[] v);
    
    }
}

Class.h

#pragma once

#include "Class.g.h"

namespace winrt::MyClass::implementation
{
    struct Class : Classt<Class>
    {
        Class() = default;

        hstring[] aaa(hstring[]  s);
 
    };
}
namespace winrt::MyClass::factory_implementation
{
    struct Class : Classt<Class,implementation::Class>
    {
    };
}

Class.cpp

#include "pch.h"
#include "Class.h"
#include "Class.g.cpp"

namespace winrt::MyClass::implementation
{

  hstring[] Class::aaa(hstring[] s)
    {
        return null;
    }
 

}

然后它报告Class.h中的错误

enter image description here

Class.cpp中的更多错误

enter image description here

欢迎评论


更新的问题

Class.idl

namespace HTMLInterpreter
{
    [default_interface]
    runtimeclass Class
    {
        Class();
        void aaa(Int32[] value);
    
    }
}

Class.h

#include "Class.g.h"

namespace winrt::HTMLInterpreter::implementation
{
    struct Class : Classt<Class>
    {
        Class() = default;
     
        void aaa(int[] v);
  
 
    };
}
namespace winrt::HTMLInterpreter::factory_implementation
{
    struct Class : Classt<Class,implementation::Class>
    {
    };
}

Class.cpp

void Class::aaa(int[] v)
{
   
}

即使我将hstring []更改为int [],它也会报告类似的错误

解决方法

更改C ++声明以使用winrt :: array_view或winrt :: array_view。您尝试使用的语法无效。