【发布时间】:2014-10-21 22:11:35
【问题描述】:
我有一个运行时组件,我需要一个来自给定Platform::Array<uint16> 的原始指针int16*。喜欢int16 buffer[20],但编译时不知道大小。
如何在不给缓冲区固定大小的情况下得到它?
ConvertArray(const Platform::Array<uint16>^ bytes)
{
int16 buffer[bytes->Length]; // doens't work
int16 buffer[20]; // works, but I never know what size it needs to be
....
}
任何建议如何做到这一点?
【问题讨论】:
-
使用
std::vector<int16>。或Platform::Array<int16> -
我真的需要
int16[],因为我使用的第三方库(旧 c)只有int16 const *data除外 -
这并不意味着您不能使用向量来存储它。您可以使用
.data()从向量中获取原始指针。也许Platform::Array也可以做到这一点(我不太了解),所以你根本不需要做任何转换。 -
Tnx 提示; ref new Platform::Array
然后 ->Data 效果很好!我想标记您的答案,但无法发表评论。 -
我现在确实将其写为答案。但是为什么要使用
new另一个平台阵列呢?你已经有了一个。您是否正在这样做并复制数据,只是因为一种类型是无符号的而另一种不是?那是不必要的。您可以将原始指针从.Data()转换为不同的指针。