В моем коде C # у меня есть следующий массив:
var prices = new[] {1.1, 1.2, 1.3, 4, 5,};
Мне нужно передать его в качестве параметра в мой управляемый модуль C ++.
var discountedPrices = MyManagedCpp.GetDiscountedPrices(prices) ;
Как должна выглядеть подпись GetDiscountedPrices
? В самом тривиальном случае, когда цены со скидкой равны ценам, как должен выглядеть метод C ++ GetDiscountedPrices
?
Редактировать: мне удалось собрать его. Мой код C # такой:
[Test]
public void test3()
{
var prices = new ValueType[] {1.1, 1.2, 1.3, 4, 5,};
var t = new TestArray2(prices , 5);
}
Мой код на C ++:
TestArray2(
array<double^>^ prices,int maxNumDays)
{
for(int i=0;i<maxNumDays;i++)
{
// blows up at the line below
double price = double(prices[i]);
}
Однако я получаю ошибку во время выполнения:
System.InvalidCastException: указанное приведение недопустимо.
Редактировать: Решение Кевина сработало. Я также нашел полезную ссылку: C ++ / CLI ключевые слова: под капотом