我正在开发一些用本机 C++ 编写的软件,带有托管 C++ 包装器和 C# 中的用户界面。我需要将一些信息从本机代码一直传递到接口。我能想到的传递信息的最佳方式是在元组列表中。我知道在本机 C++ 中我需要使用 alist<tuple<..>>
并且效果很好。我现在想要做的是在包装器中获取该输出,并返回一个List<Tuple<..>>
是System::Collections::Generic::List
andSystem::Tuple
而不是来自本机的 stl 的。我知道这些列表在语法上非常不同,但这不应该是问题。在 C# 代码中 aList<Tuple<..>>
被编译器接受,但在托管 C++ 代码中它不是。我做错了吗/我使用了错误的数据类型?任何帮助都是极好的!
问问题
5871 次
1 回答
3
尝试这样的事情:
using namespace System::Collections::Generic;
// A List<Tuple<int, float>> in managed C++
public ref class TupleTest
{
public:
static List<Tuple<int, float>^>^ GetTuple() {
List<Tuple<int, float>^>^ ret = gcnew List<Tuple<int,float>^>();
Tuple<int,float>^ t = gcnew Tuple<int,float>(5, 2.6);
ret->Add(t);
return ret;
}
};
注意:如果您愿意,可以使用 Int32 和 Single(或 Double)代替 int/float。
编辑:注意^
运营商。那些表示 C++/CLI 引用类型。你会经常使用它们!(这有点像*
普通 C++ 中的指针,但意味着 GC 的引用类型)
于 2013-07-16T13:31:19.647 回答