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

C# 列表<;元组<;int,float>&燃气轮机;在托管C++; 我正在研究一些用C++编写的C++语言的软件和C语言中的用户界面。我需要将一些信息从本机代码一直传递到接口。我能想到的传递信息的最佳方式是在元组列表中。我知道在本地C++中,我需要使用列表< /> >,这很好。我现在要做的是,在包装器中获取该输出,并返回一个List,它是System::Collections::Generic::List和System::Tuple,而不是来自本机的stl。我知道列表在语法上非常不同,但这不应该是问题所在。在C代码中,代码< >代码> 被编译器接受,但在托管C++代码中则不是。我做错了/我使用了错误的数据类型吗?任何帮助都会很棒,c#,c++,list,tuples,managed,C#,C++,List,Tuples,Managed,试试这样的方法: 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>

试试这样的方法:

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;
    }
};
使用命名空间System::Collections::Generic;
//管理C++中的列表
公共引用类TupleTest
{
公众:
静态列表^GetTuple(){
List^ret=gcnewlist();
元组^t=gc新元组(5,2.6);
ret->Add(t);
返回ret;
}
};
注意:如果愿意,可以使用Int32和Single(或Double)代替int/float


编辑:注意
^
操作符。这些表示C++/CLI引用类型。你会经常使用它们!(有点像C++中的指针,例如“代码> */CODE”,但意味着GC'ED引用类型)

你使用C++还是CLI?或者是什么?是管理的C++包,你有正确的命名空间被使用,项目被引用吗?编译器给出的确切信息是什么?名称空间很好,编译器只是说Tuple不是一个有效的泛型参数…我只是将它改为List^,它还可以…我让其他人尝试了一个小测试项目,以我的方式来做,他们没有问题,所以我仍然不确定发生了什么…好的,所以我需要两个。。。。我试过用过,但效果不太好……C++管理给我headaches@IanPanzica请记住至少在堆栈溢出时将其称为C++/CLI。托管C++会混淆使用旧的.NET C++实现的人。我会记住,谢谢!我老板只是把它叫做“管理C++”,这就是我脑子里想的。