基本上,我有一个链接列表,它实现了一个display()
函数,它只是循环遍历元素并打印出它们的值。
我想这样做:
void List::display( std::string type )
{
switch(type)
{
// Do stuff...
编译器立即抱怨。我的老师说这是因为字符串在编译时是未知的,导致错误。这个解释听起来有些不确定,但他建议我使用枚举。所以我研究了它,它说明确的字符串到枚举不起作用。像
这样的东西class List
{
enum type
{
HORIZONTAL = "inline"
VERTICAL = "normal"
}
然后,我真的不知道。
enum type
是List类的一部分,以及函数display()
。这看起来像一个非常糟糕的解决方案。不过,我想知道这种方法是否可行。
如何在调用display()的同时在main函数中设置枚举?像这样
int main( void )
{
display("normal");
当然,非常欢迎更简单的方法。一般来说,如果可能的话,如何向函数声明/传递枚举?
答案 0 :(得分:2)
class List
{
enum Type
{
HORIZONTAL,
VERTICAL
};
void display(Type type)
{
switch (type)
{
//do stuff
}
}
};
int main()
{
List l;
l.display(List::HORIZONTAL);
}
答案 1 :(得分:2)
在当前的C ++中,Switch仅适用于整数类型。您可以定义枚举,打开它,并编写一个辅助函数,在需要时将枚举映射到字符串值。
实施例
enum E { A, B };
string E_to_string( E e )
{
switch(e)
{
case A: return "apple";
case B: return "banana";
}
}
void display( E e )
{
std::cout << "displaying an " << E_to_string(e) << std::endl;
switch(e)
{
case A: // stuff displaying A;
case B: // stuff displaying B;
}
}