Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21

Ошибка C2079 "fui::parent::sim" использует не имеющую определения структуру class "fui::selectedItemManager"

23.12.2023, 16:38. Показов 841. Ответов 11

Студворк — интернет-сервис помощи студентам
Добрый день! C++ не перестает удивлять и заставляет снова просить о помощи. Столкнулся с ошибкой: error C2079: "fui :: parent :: sim" использует не имеющую определения структуру class "fui :: selectedItemManager". По моему, это из за циклической зависимости (parent.h включает transform2D.h, а тот в свою очереlь parent.h). Как исправить - не нашел, прошу о помощи.
parent.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef PARENT_H
#define PARENT_H
 
#include <vector>
#include "../algorithms/selectedItemManager.h"
 
namespace fui {
    class selectedItemManager;
 
    class parent {
    public:
        transform2D* instance;
        std::vector<transform2D*> children;
 
        parent(transform2D* instance);
        void addChild(transform2D* child);
        void removeChild(transform2D* child);
        void renderChildren(Shader shader, Shader outlineShader);
 
    private:
        rectBorder2D* border;
        selectedItemManager sim;
    };
}
#endif // !PARENT_H
selectedItemManager.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef SELECTEDITEMMANAGER_H
#define SELECTEDITEMMANAGER_H
 
#include "transform2d.h"
#include "fuifunctions.hpp"
 
namespace fui {
    class transform2d;
    class model2d;
    enum selectedItemAction_type : char {
        FREE,
        RESIZING,
        DRAGGING
    };
 
    class selectedItemAction {
    public:
        selectedItemAction(selectedItemManager* SIM);
 
        selectedItemAction_type type;
        bool getIsInAction();
        void setAction(selectedItemAction_type type, uiinteractivity* interactivity);
        void setDopData(glm::vec2 data);
        void offAction();
        uiinteractivity* getWPSender();
        uiinteractivity* getActionObject();
        void sendWishPos(glm::vec2 wp, uiinteractivity* sender);
 
    private:
        selectedItemManager* sim;
        bool isInAction;
        bool haveWP;
        uiinteractivity* actionObject;
        uiinteractivity* wpSender;
        glm::vec2 wishPos;
        glm::vec2 dopData;
    };
 
    class selectedItemManager {
    public:
        selectedItemManager();
        transform2D* selectedItem;
        std::vector<transform2D*> outlineQueue;
        std::vector<transform2D*> renderQueue;
        std::vector<glm::vec2> markerPositions;
 
        selectedItemAction action;
 
        void makeMeFirstInOutline(transform2D* model);
        void makeMeFirstInRender(transform2D* model);
        bool canBeSelected(transform2D* instance);
 
    private:
    };
}
 
#endif
transform2D.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef TRANSFORM2D_H
#define TRANSFORM2D_H
 
#include <string>
 
#include <glm/glm.hpp>
 
#include "uiinteractivity.h"
#include "rectboreder2d.h"
#include "../graphics/parent.h"
 
namespace fui {
    class model2D;
 
    class transform2D {
    public:
        glm::vec2 position;
        glm::vec2 size;
        glm::vec3 rotation;
 
        int orderInLayer;
        bool hasOutline;
        glm::vec3 outlineColor;
 
        rectBorder2D border;
        uiinteractivity interactivity;
        transform2D* parent;
 
        model2D* model;
        std::string indstanceId;
 
        transform2D(glm::vec2 pos, glm::vec2 size, glm::vec3 rotation, model2D* model, 
            rectBorder2D* modelBoreder, std::string instanceId, uiinteractivity_config config);
 
        void setOutline(glm::vec3 color);
        void setParent(transform2D* instance);
 
        glm::vec2 getPositionInPixels();
        glm::vec2 getSizeInPixels();
 
        void setPositionInPixels(glm::vec2 posInPix);
        void addPositionInPixels(glm::vec2 offsetInPix);
        void addPositionInNDC(glm::vec2 offsetInNDC);
        void changeSizeInPixels(glm::vec2 offsetInPix);
        void changeSizeInNDC(glm::vec2 offsetInNDC);
        glm::vec2 changeSizeAndGetMultiplier(glm::vec2 offsetInPix);
 
    private:
        rectBorder2D* modelBoreder;
        void calculateBoredr();
    };
}
 
#endif // !TRANSFORM2D_H
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2023, 16:38
Ответы с готовыми решениями:

C2079 c++ "fui::transform2D::interactivity' uses undefined class 'fui::uiinteractivity"
Сегодня впервые столкнулся с такой проблемой. Каким-то образом конфликтуют классы, в интернете ничего похожего я пока что не нашел. ...

Ошибка компиляции "b" использует не имеющую определения структуру class "B"
Почему данный код не работает в VS 2022: #include &lt;iostream&gt; class B; class A { public: A() {

Класс использует не имеющую структуру
Писал код на с++. Начал компилировать чтобы протестить пару методов. И что я вижу: 2 ошибки C2079&quot;sys&quot; использует не имеющую...

11
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.12.2023, 17:49
selectedItemManager должен быть определён до parent. Что не ясно? Вот и исправляй.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
23.12.2023, 18:02  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
selectedItemManager должен быть определён до parent. Что не ясно? Вот и исправляй.
А где конкретно????????
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.12.2023, 18:12
8-ю убирать пробовал?
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
23.12.2023, 18:23  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
8-ю убирать пробовал?
да, ничего не меняется
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,225
23.12.2023, 19:21
Цитата Сообщение от FouRed Посмотреть сообщение
По моему, это из за циклической зависимости (parent.h включает transform2D.h, а тот в свою очереlь parent.h).
Так а с какой целью эта зависимость была создана?

Зачем parent.h включает selectedItemManager.h? И если это нужно, то зачем тогда parent.h еще и делает предварительное объявление class selectedItemManager;?

Зачем transform2D.h включает parent.h? В parent.h содержится только class parent. Но class parent нигде не используется. Зачем понадобилось включать parent.h?

Цитата Сообщение от FouRed Посмотреть сообщение
Как исправить - не нашел, прошу о помощи.
Уничтожить файл parent.h, убрать все упоминания его в вышеприведенных файлах - он все равно не нужен и нигде не используется. Проблема решена.

Цитата Сообщение от FouRed Посмотреть сообщение
Как исправить
Заголовочные файлы друг в друге Шаги 1, 2, 3.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
23.12.2023, 19:26  [ТС]
оно должно использоваться в transform.h. Должно
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,225
23.12.2023, 19:34
Цитата Сообщение от FouRed Посмотреть сообщение
оно должно использоваться в transform.h. Должно
Нам тут не интересно что там у вас и чему "должно". Пока не ясно, что вы такое вообще пытаетесь сделать, говорить не о чем.

А самостоятельно: я дал выше ссылку, где все объясняется.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
23.12.2023, 19:37  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Нам тут не интересно что там у вас и чему "должно". Пока не ясно, что вы такое вообще пытаетесь сделать, говорить не о чем.
если бы вы спрашивали как поменять деталь в машине, а вам бы сказали купить новую, то вам бы понравилось, не так ли?
0
23.12.2023, 19:44

Не по теме:

Цитата Сообщение от FouRed Посмотреть сообщение
если бы вы спрашивали как поменять деталь в машине, а вам бы сказали купить новую, то вам бы понравилось, не так ли?
Если бы я прикрутил саморезами микроволновую печь в моторный отсек, и она бы мне там растерзала все что можно, и мне сказали бы, что микроволновая печь тут ни к чему и ее нужно убрать, то я бы согласился, а не рассказывал направо и налево, что она тут якобы "должна" быть.

Но на самом деле я бы изначально НЕ прикрутил микроволновую печь в моторный отсек.

0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
23.12.2023, 19:56  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Если бы я прикрутил саморезами микроволновую печь в моторный отсек, и она бы мне там растерзала все что можно, и мне сказали бы, что микроволновая печь тут ни к чему и ее нужно убрать, то я бы согласился, а не рассказывал направо и налево, что она тут якобы "должна" быть.
Но на самом деле я бы изначально НЕ прикрутил микроволновую печь в моторный отсек.
Простите, видимо вам лучше знать, что должно быть в моём коде, и что там нужно.

Добавлено через 9 минут
к слову ссылка не помогла
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,225
23.12.2023, 21:14
Цитата Сообщение от FouRed Посмотреть сообщение
Простите, видимо вам лучше знать, что должно быть в моём коде, и что там нужно.
Ну тут ничего не поделаешь. Если все то, что вы написали, должно быть в вашем коде, то результат в виде "Ошибка C2079 "fui::parent::sim" использует не имеющую определения структуру class "fui::selectedItemManager" неизбежен.

Тогда непонятно, о чем вопрос. Хотя вы сами в своем вопросе вели речь об исправлениях.

Цитата Сообщение от FouRed Посмотреть сообщение
к слову ссылка не помогла
Рекомендации, приведенные по этой ссылке, не могли не помочь, если вы их выполнили. Но что-то мне подсказывает, что вы даже и не пытались...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2023, 21:14
Помогаю со студенческими работами здесь

Исправить ошибку C2079 "MiniPlayer::music" использует неопределенный class "MiniMusic"
Приветствую. Ситуация следующая - есть 2 класса, оба используют друг друга. При компиляции вылезает ошибка: C2079...

Ошибка The same field name is serialized multiple times in the class or its parent class
Добрый день, я не так давно перешел с Java на C#, если не сложно помогите разобраться в коде на C# в Unity. интерфейс public...

VS2013 выдаёт ошибку Ошибка 1 error C2079: "d" использует неопределенный struct "DATE"
Привет всем. Подскажите пожалуйста, почему VS2013 выдаёт ошибку Ошибка 1 error C2079: &quot;d&quot; использует неопределенный struct...

Получить значение из child class в parent class
добрый. Я нуб в php, в классах не особо разбираюсь. Вообщем задача такая: Есть класс, есть 2-3-10 слассов которые его расширяют. ...

Структура: error C2079: "A::myElem" использует неопределенный struct "A::B"
class A { public: struct B; private: B myElem; }; struct A::B {


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru