2013-09-04 5 views
0

내 Direct2D 응용 프로그램에서 하나의 작은 도움. 내 C++ 응용 프로그램에 IVector<double>^ points 컬렉션이 있습니다. 내 C# 코드에서이 컬렉션을 설정합니다. 그래서 IList<double>에서 IVector<double>^ 포인트로 내 C#을 설정할 수 있습니다. List of double을 얻으십시오.IVector 배열을 선언하는 방법 <double>^C++의 점?

여기 내 요구 사항은 double[]의 모음을 C++ 코드로 설정해야한다는 것입니다. C#에서는 다음 구문을 사용하여 컬렉션을 선언 할 수 있습니다. List<double[]>. 하지만 C++을 처음 접했을 때 저는 Windows Store 응용 프로그램의 C++ 라이브러리에서 사용 가능한 API에 익숙하지 않았습니다. 어느 누구도이 일을 도와주세요. 그래서 결국 내 요구 사항은 "나는 C# 코드에서 내 C++ 라이브러리에 List<double[]>을 설정할 수 있어야합니다"라는 두 줄에서 간단합니다.

도움을 주시면 감사하겠습니다.

데이비드 C

+0

이것은 C++/CLI임이 분명해야합니다 (지식이있는 당사자가 바로 선택하겠습니다). 짧다면 네가하고 싶은 일을 할 수있다. 할 수있는 방법이 많이있다. http://msdn.microsoft.com/en-us/library/z6cfh6e6.aspx를 참조하십시오. – IdeaHat

답변

2

나는 당신이 모든 코드를 표시하지 않은,하지만 난 그냥 배열 구문 걸려 넘어 질 수 있다고 생각하기 때문에 문제가 무엇인지 100 % 확신한다.

C++/CLI에서 대괄호 (double[])로 배열을 선언 할 수는 있지만 작동하지만 관리되지 않는 배열입니다. 이를 관리되는 클래스의 필드로 사용할 수없고이를 관리되는 API에 전달하는 것은 쉽지 않습니다.

관리되는 배열의 구문은 array<double>입니다. 이것은 참조 유형이므로이 유형의 변수를 가지고있을 때는 ^이 필요합니다.

array<double>^ buffer = gcnew array<double>(1024); 

따라서, 귀하의 List<double[]> C에서 #은 C++/CLI에서 List<array<double>^>으로 변합니다.