enum class EmployeeType {Employee, Manager, Sales, Unknown};
class Employee
{
public:
Employee() = delete;
Employee(const Employee&) = delete;
Employee& operator=(const Employee&) = delete;
Employee& operator=(Employee&&) = delete;
Employee(Employee&&) = default;
explicit Employee(EmployeeType type);
}
When I write in main():
Employee e1(EmployeeType::Manager);
or
Employee e2(Employee(EmployeeType::Manager));
it works fine. When I write like this:
Employee e3({});
Employee e4(EmployeeType{});
Employee e5(EmployeeType(123));
compiler compiles it. But I want to forbid it using c++ keywords or using something else. I don't know how. I want to permit only this:
Employee e6(EmployeeType::Employee);
Employee e7(EmployeeType::Manager);
Employee e8(EmployeeType::Sales);
Employee e9(EmployeeType::Unknown);
Employee e10(Employee(EmployeeType::Employee));
Employee e11(Employee(EmployeeType::Manager));
Employee e12(Employee(EmployeeType::Sales));
Employee e13(Employee(EmployeeType::Unknown));
How can I do it?
I use g++ 5.4.0 in Ubuntu 16.04 LTS.
I write code in Qt Creator 4.1.0 with enabled C++11 in pro-file:
CONFIG += c++11
Aucun commentaire:
Enregistrer un commentaire