列表<;元组<;int,float>>;在托管C++中

本文关键字:gt lt C++ 元组 int 列表 float | 更新日期: 2023-09-27 18:22:40

我正在开发一些软件,这些软件是用本机C++编写的,带有托管C++包装器和C#中的用户界面。我需要将一些信息从本机代码一直传递到接口。我能想到的传递信息的最好方法是在元组列表中。我知道在本机C++中我需要使用list<tuple<..>>,这很好。我现在想做的是在包装器中获取输出,并返回一个List<Tuple<..>>,它是System::Collections::Generic::ListSystem::Tuple,而不是来自本机的stl。我知道这些列表在语法上非常不同,但这不应该是问题所在。在C#代码中,编译器接受List<Tuple<..>>,但在托管C++代码中则不接受。我是不是做错了/我使用了错误的数据类型?任何帮助都会很棒!

列表<;元组<;int,float>>;在托管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/foat。

编辑:请注意^运算符。这些表示C++/CLI引用类型。你会经常使用它们的!(这有点像普通C++中指针的*,但表示GC的引用类型)