Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 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. Показов 760. Ответов 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
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
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
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
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
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru