Циклическая зависимость C++ с защитой заголовков и упреждающими объявлениями ⇐ C++
Циклическая зависимость C++ с защитой заголовков и упреждающими объявлениями
У меня есть простой класс Vec3 и простой класс xMath.
Класс xMath должен изменить Vec3. Есть только два файла: Vec3.hpp и xMath.hpp (и мне не разрешено создавать другие файлы).
[*]оба класса находятся в одном пространстве имен [*]есть защита заголовков [*]у обоих есть включения. [*]xMath не распознается [*]использование форвардных объявлений не работает, пробовал
Использование Visual Studio 2019 Community Edition.
Получение ошибок:
[*]ошибка C2027 использование неопределенного типа 'ns::xMath'Vec3.hpp
Используя предварительные объявления, все равно возникают ошибки:
[*]ошибка C2653 Vec3 не является классом или именем пространства имен [*]ошибка C2027 использование неопределенного типа 'ns::Vec3'
Вот файлы.
//Vec3.hpp #ifndef VEC3_H #define VEC3_H #include "xMath.hpp" пространство имен нс { //класс xMath; //форвардное объявление тоже не работает.. структура Vec3 { публика: плавать х; //конструктор Vec3(float x) { this.x = x; } статическое изменение числа с плавающей запятой (Vec3* v) { v->x = xMath::Change(v); вернуть т; } }; } #endif //xMath.hpp #ifndef XMATH_H #define XMATH_H #include "Vec3.hpp" пространство имен нс { //класс Vec3; //форвардное объявление тоже не работает.. статический класс xMath { публика: статическое изменение числа с плавающей запятой (Vec3* v) { вернуть v->x; } }; } #endif
У меня есть простой класс Vec3 и простой класс xMath.
Класс xMath должен изменить Vec3. Есть только два файла: Vec3.hpp и xMath.hpp (и мне не разрешено создавать другие файлы).
[*]оба класса находятся в одном пространстве имен [*]есть защита заголовков [*]у обоих есть включения. [*]xMath не распознается [*]использование форвардных объявлений не работает, пробовал
Использование Visual Studio 2019 Community Edition.
Получение ошибок:
[*]ошибка C2027 использование неопределенного типа 'ns::xMath'Vec3.hpp
Используя предварительные объявления, все равно возникают ошибки:
[*]ошибка C2653 Vec3 не является классом или именем пространства имен [*]ошибка C2027 использование неопределенного типа 'ns::Vec3'
Вот файлы.
//Vec3.hpp #ifndef VEC3_H #define VEC3_H #include "xMath.hpp" пространство имен нс { //класс xMath; //форвардное объявление тоже не работает.. структура Vec3 { публика: плавать х; //конструктор Vec3(float x) { this.x = x; } статическое изменение числа с плавающей запятой (Vec3* v) { v->x = xMath::Change(v); вернуть т; } }; } #endif //xMath.hpp #ifndef XMATH_H #define XMATH_H #include "Vec3.hpp" пространство имен нс { //класс Vec3; //форвардное объявление тоже не работает.. статический класс xMath { публика: статическое изменение числа с плавающей запятой (Vec3* v) { вернуть v->x; } }; } #endif
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение