【问题标题】:How to construct a Platform::Array from a std::vector如何从 std::vector 构造 Platform::Array
【发布时间】:2016-01-20 22:06:26
【问题描述】:

我认为它是这样工作的

std::vector<char> array;
Platform::Array<char>^ data = ref new Platform::Array<char>(array, array.size());

但是说“没有构造函数的实例与参数列表匹配”

【问题讨论】:

    标签: c++ arrays c++-cx


    【解决方案1】:

    您应该发送指向Platform::Array 的构造函数的指针,而std::vector 是类,而不是数组。

    Platform::Array<char>^ data = ref new Platform::Array<char>(array.data(), 
    array.size());
    

    如果启用了 C++11,或者

    Platform::Array<char>^ data = ref new Platform::Array<char>(&array[0], 
    array.size());
    

    如果不是(它是 UB 访问空向量中的第一个元素,所以我不知道在 C++11 之前,当向量为空时,我们如何访问底层数组)。

    【讨论】:

    • 在 C++ 中构造指向超过受控序列末尾的第一个元素的指针是合法的。取消引用该指针会产生 UB,但我会假设 Platform::Array c'tor 知道如何处理零大小的输入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多