Использование типа enum класса в switch вызывает ошибки - PullRequest
0 голосов
/ 22 ноября 2018

Я надеялся, что кто-нибудь может помочь мне с ошибкой, которую я использую с помощью класса enum в случае переключателяпытаясь использовать тип траверс, чтобы выбрать путь в коммутаторе.Вот мой код:

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 голосов
/ 22 ноября 2018

Ваша функция друга нуждается в ссылке на объект класса для доступа к его члену - 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)
...