У меня есть большое пространство имен для всего моего проекта, а затем каждый компонент (файл) имеет собственное вложенное пространство имен внутри этого файла. Большое пространство имен называется IEEngine, а вложенные — IEWhatever (например, IEWindow). Но как мне из IEEngine::IEWhatever2 получить доступ к IEEngine::IEWhatever::Something (что-то является классом). Когда я делаю IEEngine::IEWhatever::Something, я получаю сообщение об ошибке, что в пространстве имен IEEngine нет члена IEWhatever. я включил файл, предоставляющий пространство имен IEWWhatever. но этот файл также включает в себя файл, предоставляющий IEWhatever2, поэтому возникает ошибка, говорящая, что IEWhatever не определен (включение помещается перед пространством имен IEWhatever). Как бы мне исправить это IESomething::Something тоже не работает. Я также попробовал
использовать Something = IEWhatever::Something; но это не сработало
IEDisplay.hpp:
#ifndef IEDISPLAY_HPP
#define IEDISPLAY_HPP
#ifndef IEWINDOW_HPP
#include "IEWindow.hpp"
#endif // IEWINDOW_HPP
#include
#include
#include "external/wayland-protocols/tearing-control-v1/tearing-control-v1.h"
#include "external/wayland-protocols/xdg-shell/xdg-shell-client-protocol.h"
#include "external/wayland-protocols/viewporter/viewporter-client-protocol.h"
namespace IEEngine {
namespace IEDisplay {
class WLDisplay {
private:
struct wl_display* display;
struct wl_registry* registry;
struct wl_compositor* compositor;
struct xdg_wm_base* wm_base;
struct wl_seat* seat;
struct wl_pointer* pointer;
struct wl_touch* touch;
struct wl_keyboard* keyboard;
struct wl_shm* shm;
struct wl_cursor_theme* cursor_theme;
struct wl_cursor* cursor;
struct wl_surface* cursor_surface;
struct wp_tearing_control_manager_v1* tearing_manager;
struct wp_viewporter* viewporter;
struct wp_fractional_scale_manager_v1* fractional_scale_manager;
IEWindow::WLWindow window;
};
}
}
#endif // IEDISPLAY_HPP
IEWindow.hpp:
#ifndef IEWINDOW_HPP
#define IEWINDOW_HPP
#ifndef IEDISPLAY_HPP
#include "IEDisplay.hpp"
#endif // IEDISPLAY_HPP
namespace IEEngine {
namespace IEWindow {
class WLWindow {
IEDisplay::WLDisplay display;
int wHeight;
int wWidth;
};
}
}
#endif // IEWINDOW_HPP
Подробнее здесь: https://stackoverflow.com/questions/793 ... amespace-c