我試圖做一個項目,需要使用list.i似乎無法讓它的工作。 下面是我的代碼:錯誤:非法使用此類型作爲表達式。列表在vC++
ref class MyClass2
{
public:
int x;
String^ str;
}
List<MyClass2> lst =gcnew List<MyClass2>(); //here is the error
我在Visual Studio 2008年的工作
我試圖做一個項目,需要使用list.i似乎無法讓它的工作。 下面是我的代碼:錯誤:非法使用此類型作爲表達式。列表在vC++
ref class MyClass2
{
public:
int x;
String^ str;
}
List<MyClass2> lst =gcnew List<MyClass2>(); //here is the error
我在Visual Studio 2008年的工作
您需要這個(注意總共三個^
使用):
List<MyClass2^>^ lst =gcnew List<MyClass2^>();
這是因爲MyClass2
是引用類型,只能用MyClass2^
使用,並與gcnew
(就像List
)分配。
因此,您可以參考List
,其中可以包含對MyClass2
的引用。
然後,添加項目:
MyClass2^ mc = gcnew MyClass2();
mc->x = 2; //Set values
lst->Add(mc);
啊對了。這是一個愚蠢的錯誤。謝謝。 :D – user3508140
@ user3508140如果您是C++/CLI的新手,會發生很多新的/不同的事情。 – crashmstr
對不起。我現在發表評論爲時尚早。錯誤仍然存在。錯誤:「T的泛型類型參數不能是MyClass2」。 – user3508140
gcnew
返回參考。你不能把它分配給一個對象。另外,您正在存儲引用,而不是對象。因此,只要這樣做:
List<MyClass2^>^ lst = gcnew List<MyClass2^>(); //note what I'm assigning to
同樣,與標準new
你必須使用指針。
錯誤仍然存在。還有什麼我可以嘗試的? – user3508140
編輯的人工作。我應該早點意識到我的錯誤。感謝您的幫助。 :D – user3508140
@ user3508140在啓動我的IDE後發現它,對不起,延遲 – BradleyDotNET
這是C#或C++? – Pseudonym
這是C++/CLI的一個重要區別,應該使用C++ - CLI標籤。 – crashmstr