【发布时间】:2018-11-22 04:48:34
【问题描述】:
我希望有人可以帮助我解决我在 switch case 中使用枚举类时遇到的错误。尝试使用遍历类型来选择交换机中的路径。 这是我的代码:
enum class TraverseType { PREORDER, INORDER, POSTORDER, BREADTHORDER };
private:
TraverseType traverseOrder;
public:
friend ostream& operator<<(ostream& out, const BTree& tree)
{
TraverseType type = traverseOrder;//error
switch (type)
{
case TraverseType::PREORDER:
{
break;
}
case TraverseType::INORDER:
{
break;
}
case TraverseType::POSTORDER:
{
break;
}
case TraverseType::BREADTHORDER:
{
break;
}
default:
{
break;
}
}
return out;
}`
我得到的错误是: 错误 C2440 'initializing':无法从 'unknown' 转换为 'TraverseType' 并且我已经尝试找到解决这个问题的方法已经好几个小时了。如果您需要更多代码,请告诉我。提前感谢您的帮助
【问题讨论】:
-
enum class TraverseType { PREORDER, INORDER, POSTORDER, BREADTHORDER }; -
@user4581301 这是未完成的代码。我只是想让它编译,但是我正在尝试使用开关来选择不同的方式来遍历二叉树
-
看起来你想要
enum class TraverseType { PREORDER, INORDER, POSTORDER, BREADTHORDER };class BTree { private:注意class BTree {塞在那里。 -
@user4581301 你的意思是我应该移动“模板
” 行,因为我试过了,它本身会导致错误。我正在寻找的答案类似于 stackoverflow.com/questions/9062082/... 中的答案,除了我需要在另一个函数中设置遍历类型,然后在 switch 中用作案例 -
我认为发布整个代码会有所帮助 - 在coliru.stacked-crooked.com 或类似的在线 ide 上提供它会更好。
标签: c++ enums switch-statement enum-class