首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带enum的C++级红绿灯?

带enum的C++级红绿灯?
EN

Stack Overflow用户
提问于 2019-12-20 22:17:23
回答 2查看 447关注 0票数 1

我有一个TrafficLight C++类,我对使用枚举进行色彩管理有一些疑问,特别是关于要使用的正确语法。下面我将编写简化的代码片段,因为我的目的只是为了理解它是如何工作的:

代码语言:javascript
复制
class TrafficLight
{
private:
    // ...
    enum class color{
        GREEN,
        RED,
        YELLOW
    };
    // ...
public:
    TrafficLight(/* Want to pass the color here in the constructor */)
    {
        if(/* Color passed as argument is RED */)
            // do something...
        {}
        else
            // do something else...
        {}
    }
}; 

OtherClass:这个类创建一个具有指定颜色的TrafficLight对象:

代码语言:javascript
复制
class OtherClass
{
public:
    //...
    void createTrafficLight()
    {
        TrafficLight traffic_light(/* Color */);
    }
    //...
};

TrafficLIght和OtherClass不在同一文件中。

我不确定将红绿灯的颜色作为参数传递的语法是什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-20 22:28:49

可以像使用任何其他类型一样使用color,并且可以像访问类的静态成员一样访问它的枚举器:

代码语言:javascript
复制
    TrafficLight(color col)
    {
        if(col == color::RED)
            // do something...

    //...
代码语言:javascript
复制
    void createTrafficLight()
    {
        TrafficLight traffic_light(TrafficLight::color::RED);
    }

但是,如果类外部的代码被认为能够访问它和它的枚举器,那么您将需要使enum class color public

票数 3
EN

Stack Overflow用户

发布于 2019-12-20 22:39:11

您首先需要使您的枚举是公共的,然后在定义OtherClass的文件中包含trafficLight类的.h。

代码可以是以下代码:

代码语言:javascript
复制
class TrafficLight
{
private:

public:

    // ...
    enum class color{
        GREEN,
        RED,
        YELLOW
    };
    // ...

    TrafficLight(color col)
    {
        if(col == color::RED)
            // do something...
        {}
        else
            // do something else...
        {}
    }
}; 

并且OtherClass需要包括.h,其中定义了TrafficLight类

代码语言:javascript
复制
class OtherClass
{
public:
    //...
    void createTrafficLight()
    {
        TrafficLight traffic_light(TrafficLight::color::RED);
    }
    //...
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59426711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档