Когда я пытаюсь скомпилировать этот код:
#include <iostream>
namespace Direction
{
enum Enum { UP, DOWN, LEFT, RIGHT };
}
using namespace std;
void move(int pDir);
int main()
{
printf("UP: %u\n", Direction::UP);
printf("DOWN: %u\n", Direction::DOWN);
printf("LEFT: %u\n", Direction::LEFT);
printf("RIGHT: %u\n", Direction::RIGHT);
move(Direction::UP);
return 0;
}
void move(int pDir)
{
printf("Move: ");
switch(pDir)
{
case(Direction::UP):
printf("UP");
break;
case(Direction::DOWN):
printf("DOWN");
break;
case(Direction::RIGHT):
printf("RIGHT");
break;
case(Direction::LEFT):
printf("LEFT");
break;
default:
printf("nothing");
break;
}
}
Результат, который я ожидаю, будет:
UP: 0
DOWN: 1
LEFT: 2
RIGHT: 3
Move: UP
Вместо этого будет:
UP: 0
DOWN: 1
LEFT: 2
RIGHT: 3
Кажется, что void move(..)
просто игнорируется.
Я уже нашел проблему: это using namespace std
.Когда я его удаляю, я получаю ожидаемый результат.
Итак, у меня есть три вопроса:
1) Почему void move(..)
просто "игнорируется"
2)Почему я могу получить доступ к членам Direction в первых четырех строках int main()
3) Как это исправить?, _,
Хорошего дня, друзья мои.
ps: Это извлеченный пример моей проблемы, в моем проекте мне нужно использовать пространство имен std.