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

标签 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;
};

有没有办法在类本身中包含枚举数据类型,同时仍然允许从外部访问修改器/访问器函数?

最佳答案

是的,你可以这样做:

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;
};

..然后其他人说,您只需要使用 Pizza“命名空间”即可获得枚举类型:

Pizza::PizzaType tmp = pPizza->getPizzaType();

等等等等

(作为风格说明,当您像这样将枚举放入类中时,我会亲自删除它前面的 Pizza,这样您就有 Pizza::Type 和 Pizza::Size。)

关于c++ - C++ 中的枚举数据类型和类 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874962/

相关文章:

c++ - 使用 auto 关键字初始化 char 数组

c++ - 哪种处理虚拟析构函数的方法更好?

c++ - 对话框上下文 - 如何保存?

api - "Activate"的 RESTful URL

java - 与内部实现的接口(interface)——好还是坏

c++ - 余弦/正弦矩阵数学

api - Paypal 发送发票不发送电子邮件

javascript - imgur api key 在 JavaScript 中不起作用?

c# - 在 C#(或任何语言)中,你最喜欢的删除重复的方法是什么?

java - 哪些代码折叠插件适用于 Eclipse 3.6?