在开关中使用枚举类类型会导致错误

时间:2018-11-22 04:48:34

标签: c++ enums switch-statement enum-class

我希望有人可以帮助我解决在开关盒中使用枚举类的错误。尝试使用导线类型在开关中选择路径。 这是我的代码:

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“正在初始化”:无法从“未知”转换为“ TraverseType”,并且我已经尝试了数小时的解决方案。如果您需要更多代码,请告诉我。谢谢您的提前帮助

1 个答案:

答案 0 :(得分:0)

您的朋友功能需要引用类对象才能访问其成员traverseOrder。

您的班级名字是什么?如果它是BTree,则使用其引用访问私有成员。

enum class TraverseType { PREORDER, INORDER, POSTORDER, BREADTHORDER };
private: 
    TraverseType traverseOrder;
public:
friend ostream& operator<<(ostream& out, const BTree& tree)
{
    TraverseType type = tree.traverseOrder;
    switch (type)