Tôi muốn sử dụng một cái gì đó như typedef trong các chương trình C++ của tôi để tăng cường an toàn loại.typesafe typedef trong C++
Như một ví dụ, giả sử tôi có hai chức năng
void function1(unsigned idOfType1);
void function2(unsigned idOfType2);
sau đó tôi nhầm lẫn có thể vượt qua idOfType2 để Function1 và ngược lại. Tôi muốn trình biên dịch cho tôi một lỗi trong trường hợp này. Tôi biết rằng tôi có thể bọc các unsigned trong một cấu trúc, nhưng sau đó tôi phải cung cấp cho cung cấp một tên trường và sử dụng .
để truy cập chúng, đó là hơi bất tiện. Có cách nào tốt cho việc này không?
Chỉnh sửa: Theo như tôi biết typedef
sẽ không hoạt động cho mục đích này vì nó chỉ là viết tắt của một loại và sẽ không được sử dụng để kiểm tra loại.
Enums làm việc tốt trong trường hợp của bạn ... –
@AlexanderPavlov cẩn thận để xây dựng, nó không phải là hiển nhiên đối với tôi ... – Paul
@Paul: bạn có thể viết một cái gì đó như 'enum Type1 {dummy0 = 1, dummy1 = 1 << 1, dummy2 = 1 < <2, ..., dummy31 = 1 << 31}; ', và giả sử' unsigned' là một loại 32 bit trên thực hiện của bạn thì kết quả là một enum có thể giữ bất kỳ giá trị nào của 'unsigned'. Sau đó, 'void function1 (Type1 id)' sẽ không chấp nhận một 'Type2', bởi vì enums không chuyển đổi hoàn toàn với nhau. –