如果您应该将所有内容封装在类定义中,那么如何在类中使用枚举数据类型呢?例如,我刚刚编写了以下代码......
enum PizzaType {DEEP_DISH, HAND_TOSSED, PAN};
enum PizzaSize {SMALL, MEDIUM, LARGE};
class Pizza {
public:
Pizza();
void setPizzaType(PizzaType type);
PizzaType getPizzaType();
void setPizzaSize(PizzaSize size);
PizzaSize getPizzaSize();
void setToppings(int toppings);
int getToppings();
void outputDescription();
double computePrice();
private:
PizzaType pizzaType;
PizzaSize pizzaSize;
int totalToppings;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法在类本身中包含枚举数据类型,但仍允许从外部访问mutator/accessor函数?
是的,你可以这样做:
class Pizza {
public:
enum PizzaType {DEEP_DISH, HAND_TOSSED, PAN};
enum PizzaSize {SMALL, MEDIUM, LARGE};
Pizza();
void setPizzaType(PizzaType type);
PizzaType getPizzaType();
void setPizzaSize(PizzaSize size);
PizzaSize getPizzaSize();
void setToppings(int toppings);
int getToppings();
void outputDescription();
double computePrice();
private:
PizzaType pizzaType;
PizzaSize pizzaSize;
int totalToppings;
};
Run Code Online (Sandbox Code Playgroud)
..然后其他人说,你只需要使用Pizza"命名空间"来获取枚举类型:
Pizza::PizzaType tmp = pPizza->getPizzaType();
Run Code Online (Sandbox Code Playgroud)
等等
(作为一种风格的说明,当你把这些枚举放在这个类的内部时,我会亲自删除前面的披萨,这样你就有了Pizza :: Type和Pizza :: Size.)