2013-07-16 44 views
1

我正在編寫一些使用託管C++包裝器和C#中的用戶界面以本地C++編寫的軟件。我需要將本機代碼中的一些信息一直傳遞到接口。我能想到的傳遞我的信息的最佳方式是在一個元組列表中。我知道在本機C++中,我需要使用list<tuple<..>>,而且工作正常。我現在想做的是在包裝中取出輸出,並返回List<Tuple<..>>,這是System::Collections::Generic::ListSystem::Tuple而不是本地的stl。我知道這些列表在語法上有很大不同,但這不應該成爲問題。在C#代碼中,編譯器接受了List<Tuple<..>>,但在託管的C++代碼中卻沒有。我做錯了/我使用了錯誤的數據類型嗎?任何幫助都是極好的!在託管C++中列表<Tuple <int, float>>

+0

您使用的是C++/CLI還是其他? –

+0

是的,這是託管的C++包裝 –

+0

你有正確的名稱空間正在使用和項目引用?編譯器給出的確切消息是什麼? –

回答

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和單(或雙),而不是INT /浮動。

編輯:通知的^運營商。這些表示C++/CLI參考類型。你會用很多! (有點像*對於常規C++中的指針,但是表示GC'ed引用類型)

+0

好吧,所以我需要這兩個^的....我曾嘗試使用它們,但它沒有工作得很好....託管C++讓我頭痛 –

+0

@IanPanzica記得稱它爲C++/CLI,至少在Stack Overflow上。託管C++會混淆使用舊的.Net C++實現的人們。 – 2013-07-16 13:38:36

+0

我會記得那個謝謝!我的老闆只是把它稱爲託管的C++,所以這就是我頭腦中的東西。 –

相關問題