我有一个TrafficLight C++类,我对使用枚举进行色彩管理有一些疑问,特别是关于要使用的正确语法。下面我将编写简化的代码片段,因为我的目的只是为了理解它是如何工作的:
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对象:
class OtherClass
{
public:
//...
void createTrafficLight()
{
TrafficLight traffic_light(/* Color */);
}
//...
};TrafficLIght和OtherClass不在同一文件中。
我不确定将红绿灯的颜色作为参数传递的语法是什么
发布于 2019-12-20 22:28:49
可以像使用任何其他类型一样使用color,并且可以像访问类的静态成员一样访问它的枚举器:
TrafficLight(color col)
{
if(col == color::RED)
// do something...
//... void createTrafficLight()
{
TrafficLight traffic_light(TrafficLight::color::RED);
}但是,如果类外部的代码被认为能够访问它和它的枚举器,那么您将需要使enum class color public。
发布于 2019-12-20 22:39:11
您首先需要使您的枚举是公共的,然后在定义OtherClass的文件中包含trafficLight类的.h。
代码可以是以下代码:
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类
class OtherClass
{
public:
//...
void createTrafficLight()
{
TrafficLight traffic_light(TrafficLight::color::RED);
}
//...
};https://stackoverflow.com/questions/59426711
复制相似问题