Глобальный "enum" не подхватывает подключаемый класс

Думал, что объявив enum в глобальной области видимости, пространство имен будет видно во всей программе, но столкнулся вот с чем:

#Я подключаю нужные библиотеки
#Подключаю defin
#Затем подключаю enum direction { RIGHT, LEFT, UP, DOWN };

#include "textRect.h"  затем подключаю хедер своего класса, 
который рисует квадрат из знаков.
В этом классе есть функция void move(direction dir); в которой 
я хочу использовать это пространство имён.

Вот на этот direction dir компилятор и ругается, говорит что он не определён. Когда собираю всё в одном файле main.cpp, всё работает, отдельно подсоединяю класс, начинает жаловаться.

Хотелось бы узнать почему? Ведь direction в глобальной области видимости. Пытался самостоятельно найти ответ на этот вопрос, не получилось, заранее признателен за помощь.

#include <windows.h>
#include <conio.h>
#include <iostream>

#define KEY_ARROW_UP    72 
#define KEY_ARROW_RIGHT 77 
#define KEY_ARROW_DOWN  80
#define KEY_ARROW_LEFT  75 

using namespace std;
enum direction { RIGHT, LEFT, UP, DOWN };
#include "textRect.h"

Ответы (1 шт):

Автор решения: AlexGlebe

При сборке два .cpp файла компилируются отдельно. В первом файле main.cpp тип enum direction определён, а во втором textRect.cpp - нет. Вы в обоих .cpp файлах делаете подлючение textRect.h, вот и определение enum нужно прописывать в хедер, чтобы двум компиляциям хватило информации.

textRect.h :

enum direction { RIGHT, LEFT, UP, DOWN };
class textRect
{ ...
→ Ссылка