我正在开发一些用 native C++ 编写的软件,带有托管 C++ 包装器和 C# 用户界面。我需要将一些信息从 native 代码一直传递到界面。我认为传递信息的最佳方式是在元组列表中。我知道在 native C++ 中我需要使用 list<tuple<..>>
这很好用。我现在想做的是在包装器中获取输出,然后返回 List<Tuple<..>>
这是 System::Collections::Generic::List
和 System::Tuple
而不是来自本地的 STL。我知道这些列表在句法上有很大不同,但这不应该是问题所在。在 C# 代码中 List<Tuple<..>>
被编译器接受,但在托管 C++ 代码中它不被接受。我做错了吗/我使用了错误的数据类型吗?任何帮助都会很棒!
最佳答案
尝试这样的事情:
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 处理过的引用类型)
关于c# - 托管 C++ 中的 List<Tuple<int, float>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677530/