Enumerations and State
Scoped Enums
enum class keeps enum names inside the enum type.
Scoped Enums
scoped_enums.cpp
#include <iostream>
#include <string>
enum class Role {
Guest,
Member,
Admin
};
std::string label(Role role) {
if (role == Role::Admin) {
return "admin";
}
if (role == Role::Member) {
return "member";
}
return "guest";
}
int main() {
Role role = ;
bool canEdit = role == Role::Admin;
std::cout << "role=" << label(role) << std::endl;
std::cout << "canEdit=" << canEdit << std::endl;
return 0;
}
#include <iostream>
#include <string>
enum class Role {
Guest,
Member,
Admin
};
std::string label(Role role) {
if (role == Role::Admin) {
return "admin";
}
if (role == Role::Member) {
return "member";
}
return "guest";
}
int main() {
Role role = ;
bool canEdit = role == Role::Admin;
std::cout << "role=" << label(role) << std::endl;
std::cout << "canEdit=" << canEdit << std::endl;
return 0;
}
#include <iostream>
#include <string>
enum class Role {
Guest,
Member,
Admin
};
std::string label(Role role) {
if (role == Role::Admin) {
return "admin";
}
if (role == Role::Member) {
return "member";
}
return "guest";
}
int main() {
Role role = ;
bool canEdit = role == Role::Admin;
std::cout << "role=" << label(role) << std::endl;
std::cout << "canEdit=" << canEdit << std::endl;
return 0;
}
scoped enum
A scoped enum uses names such as `Role::Admin`, which helps avoid accidental name conflicts.