1

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

4

1 回答 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 回答