c++玫举:请问如何让<多个玫举类型>成为函数的<输入参数>输入参数>多个玫举类型>
假如有如下一个类,
class Color
{
public:
enum family
{
family_red = 0,
family_yellow = 1,
family_green = 2,
...
}
enum red
{
red_0 = 0,
red_1 = 1,
red_2 = 2,
...
}
enum yellow
{
yellow_0 = 0,
yellow_1 = 1,
yellow_2 = 2,
...
}
enum green
{
green_0 = 0,
green_1 = 1,
green_2 = 2,
...
}
struct data
{
UINT8 family;
UINT16 id;
const char * name;
const char * hex;
UINT8 rgb[3];
data(...)
{
(初始化省略)
...
}
}
public:
vector<data>List;
Color()
{
//填数据
List.push_back(data(...))
}
public
//根据family,id返回data结构
data Get(uint8 _family,unit8 _id)
{
for (int i = 0; i < List.size(); i++)
{
data da = List[i];
if (da.family = _family && da.id == _id)
{
return da;
}
}
}
//根据玫举类型返回数据
data Get(family _family,red _id)
{
return Get((uint8) _family,(uint8)_id);
}
data Get(family _family,yellow _id)
{
return Get((uint8)_family,(uint8)_id);
}
data Get(family _family,green _id)
{
return Get((uint8) _family,(uint8)_id);
}
...
}
Get函数重载,第二个参数的输入类型分别限定为red,yellow,green...
,如果我写成
data Get(family _family,enum _red_yellow_green)
{
return Get((uint8)_family,(uint8) _red_yellow_green);<-报错:不允许使用类型名
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的
想表达什么含义,第二个参数只能使用 red、yellow、green 吗?C/C++不存在这样的用法啊?是你自己想象的吗?你这么写是要定义一个enum,结果放在了参数定义部分,当然会报错了。
你不是已经有了
这已经限制了只能使用 red, yellow, green 作为第二个参数了,如果你不想让用户直接使用
你直接把这个函数放到 private: 下面就可以了啊,不知道你的目的是什么?