2009-07-15 9 views
23

Tôi đang làm việc trên một dự án ngay bây giờ và một phần của nó sử dụng Managed C++. Trong mã C++ được quản lý, tôi đang tạo một DataTable. Trong khi xác định các cột cho datatable, tôi cần phải xác định loại cột. Trong C#, điều đó sẽ:Làm thế nào để tôi gõ typeof (int) trong Managed C++?

typeof (int)

nhưng làm cách nào để làm điều đó trong Managed C++?

Cảm ơn!

+2

để tham khảo trong tương lai ... nếu bạn muốn xem các ngôn ngữ được quản lý tương đương, bạn có thể viết mã đơn giản trong C# và sử dụng Redgate Reflector để giải mã nó vào bất kỳ ngôn ngữ CLR nào. –

Trả lời

54

Trong C++/CLI, use the typeid keyword.

ví dụ:

Type ^t = Int32::typeid; 

Trong cú pháp cũ "Managed C++ Extensions", bạn muốn sử dụng __typeof(Int32), nhưng điều đó hoàn toàn phiên bản của ngôn ngữ bị phản đối nghiêm trọng và bạn nên sử dụng C++/CLI.

+0

Lưu ý rằng từ khóa int chỉ là một hệ thống aliasto.Int32 –

+0

Tôi đã khôi phục bản chỉnh sửa đã được tạo ra bởi vì nó sai. Trong C++/CLI (như trong C++), những thứ được chứa trong một kiểu được truy cập bằng '::' thay cho '.' (như được sử dụng trong C#). Các phiên bản trình biên dịch C++/CLI trước đó đã cho phép cú pháp C# sai. Visual Studio 2010 Beta 1 dường như đã chặn nó. –

+0

Trong thực tế, 2008 SP1 không cho phép nó ... tại sao thực hiện chỉnh sửa đó thành câu trả lời ?! –