một vài tuần trước một đồng nghiệp của tôi đã dành khoảng hai giờ tìm hiểu lý do tại sao đoạn mã C++/CLI này sẽ không biên dịch với Visual Studio 2008 (tôi vừa thử nghiệm nó với Visual Studio 2010 ... cùng một câu chuyện).Ràng buộc lớp giá trị C++/CLI sẽ không biên dịch. Tại sao?
public ref class Test
{
generic<class T> where T : value class
void MyMethod(Nullable<T> nullable)
{
}
};
Trình biên dịch nói: Lỗi
1 lỗi C3214: 'T': loại không hợp lệ luận cho tham số chung 'T' của chung 'Hệ thống :: Nullable', không đáp ứng hạn chế 'Hệ thống :: ValueType ^' C: \ Users \ Simon \ Desktop \ Projektdokumentation \ GridLayoutPanel \ Generics \ Generics.cpp 11 1 Generics
Thêm ValueType
sẽ làm cho việc biên dịch mã.
public ref class Test
{
generic<class T> where T : value class, ValueType
void MyMethod(Nullable<T> nullable)
{
}
};
Câu hỏi của tôi hiện là. Tại sao? Sự khác nhau giữa value class
và ValueType
là gì?
Tái bút: Xem định nghĩa Nullable cho C++: http://msdn.microsoft.com/de-de/library/b3h38hb0.aspx
Tôi đồng ý, ràng buộc lớp giá trị phải là đủ. Tôi nghĩ cách giải quyết của bạn là chính xác. Bạn có thể thử connect.microsoft.com để xem họ sẽ nói gì. –