C++中枚举的数据类型和类API

0 c++ api coding-style class

如果您应该将所有内容封装在类定义中,那么如何在类中使用枚举数据类型呢?例如,我刚刚编写了以下代码......

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函数?

Jim*_*uck 5

是的,你可以这样做:

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.)

  • 您的枚举实际上是私有的,因此其他人无法声明这些类型的变量.将他们的声明移到公共部分. (2认同)