Chciałbym użyć czegoś podobnego do typedef w moich programach w C++, aby zwiększyć bezpieczeństwo typów.typesafe typedef w C++
Jako przykład, przypuśćmy że dwa zadania
void function1(unsigned idOfType1);
void function2(unsigned idOfType2);
następnie można omyłkowo przechodzą idOfType2 do Function1 i vice versa. Chcę, aby kompilator dał mi błąd w tym przypadku. Jestem świadomy, że mógłbym zawinąć te niepodpisane w struct, ale wtedy musiałbym podać nazwę pola i użyć .
, aby uzyskać do nich dostęp, co jest nieco niewygodne. Czy istnieje dobry sposób obejścia tego?
Edycja: O ile mi wiadomo, typedef
nie będzie działać w tym celu, ponieważ jest skrótem dla typu i nie będzie używany do sprawdzania typu.
wyliczenia działa dobrze w twoim przypadku ... –
@AlexanderPawlowska troska o szczegóły, nie jest dla mnie oczywista ... – Paul
@Paul: możesz napisać coś w rodzaju 'enum Type1 {dummy0 = 1, dummy1 = 1 << 1, dummy2 = 1 < <2, ..., dummy31 = 1 << 31}; ', i zakładając' unsigned' jest 32-bitowym typem twojej implementacji, wynikiem jest wyliczenie, które może zawierać dowolną wartość 'unsigned'. Wtedy 'void function1 (Type1 id)' nie zaakceptuje 'Type2', ponieważ enums nie są niejawnie wymienialne dla siebie. –