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

Требуется помощь с ошибкой c2079, не знаю что от меня требуется

18.11.2023, 11:17. Показов 846. Ответов 10

Студворк — интернет-сервис помощи студентам
Сегодня впервые столкнулся с такой проблемой. Каким-то образом конфликтуют классы, в интернете ничего похожего я пока что не нашел.
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
#ifndef TRANSFORM2D_H
#define TRANSFORM2D_H
 
#include <string>
 
#include <glm/glm.hpp>
 
#include "../graphics/fuiscene.h"
#include "../graphics/model2d.h"
 
#include "uiinteractivity.h"
#include "rectboreder2d.h"
 
namespace fui {
    class model2D;
 
    class transform2D {
    public:
        glm::vec2 position;
        glm::vec2 size;
        glm::vec3 rotation;
 
        rectBorder2D border;
        uiinteractivity interactivity;
 
        model2D* model;
        std::string indstanceId;
 
        transform2D(glm::vec2 pos, glm::vec2 size, glm::vec3 rotation, model2D* model, rectBorder2D* modelBoreder, std::string instanceId);
 
        glm::vec2 getPositionInPixels();
        glm::vec2 getSizeInPixels();
 
        void setPositionInPixels(glm::vec2 posInPix);
        void addPositionInPixels(glm::vec2 offsetInPix);
    private:
        rectBorder2D* modelBoreder;
 
        void calculateBoredr();
    };
}
 
#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
#include "transform2d.h"
 
fui::transform2D::transform2D(glm::vec2 pos, glm::vec2 size, glm::vec3 rotation, model2D* model, rectBorder2D* modelBoreder, std::string instanceId)
    : position(pos), size(size), rotation(rotation), model(model), modelBoreder(modelBoreder), indstanceId(instanceId) {
    calculateBoredr();
    interactivity = uiinteractivity(this);
}
 
glm::vec2 fui::transform2D::getPositionInPixels() {
    float x = (position.x + 1) / 2;
    float y = (position.y + 1) / 2;
    return glm::vec2(x * fui::scene::width, y * fui::scene::height);
}
 
glm::vec2 fui::transform2D::getSizeInPixels() {
    return glm::vec2(size.x * fui::scene::width, size.y * fui::scene::height);
}
 
void fui::transform2D::setPositionInPixels(glm::vec2 posInPix) {
    position = glm::vec2(((posInPix.x / (double)fui::scene::width) - 0.5) * 2, ((posInPix.y / (double)fui::scene::height) - 0.5) * 2);
    calculateBoredr();
}
 
void fui::transform2D::addPositionInPixels(glm::vec2 offsetInPix) {
    setPositionInPixels(getPositionInPixels() + offsetInPix);
}
 
void fui::transform2D::calculateBoredr() {
    border = rectBorder2D(modelBoreder->min * size + position, modelBoreder->max * size + position);
}
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
#ifndef UIINTERACTIVITY_H
#define UIINTERACTIVITY_H
 
#include "../graphics/shader.h"
#include "../graphics/fuiscene.h"
 
#include "transform2d.h"
 
namespace fui {
    class transform2D;
 
    class uiinteractivity {
    public:
        transform2D *instance;
 
        uiinteractivity();
        uiinteractivity(transform2D* transform);
 
        bool isDraggable;
        bool isResizeable;
 
        void update(Shader outlineShader);
        void drag(Shader outlineShader);
    };
}
 
#endif
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
#include "uiinteractivity.h"
 
fui::uiinteractivity::uiinteractivity(){}
 
fui::uiinteractivity::uiinteractivity(transform2D* transform) 
    : instance(transform) {
    isDraggable = true;
    isResizeable = true;
}
 
void fui::uiinteractivity::update(Shader outlineShader) {
    drag(outlineShader);
}
 
void fui::uiinteractivity::drag(Shader outlineShader) {
    if (isDraggable) {
        if (instance->border.isDotInRect(fui::scene::getMousePosInNDC())) {
            float x = Mouse::getDX();
            float y = Mouse::getDY();
            if (instance->border.getDistFromPointToBorder(fui::scene::getMousePosInNDC()) < 0.2)
                instance->model->addToShadersQueue(outlineShader, instance->model->getInstaneIdxById(instance->indstanceId));
            instance->addPositionInPixels(glm::vec2(x, y));
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2023, 11:17
Ответы с готовыми решениями:

Что от меня требуется?
Есть задания по данным предметам - 1. Базы данных 2. Основы программирования 3. Инфокомуникационные системы Сами задания...

Что от меня требуется?
1)&quot;Участникам необходимо будет доработать конфигурацию в версии 8.3.13 в соответствии с заданием. Задание будет связано с формированием...

Не понимаю что от меня требуется
Используя макросы обработки переменного количества параметров, составить программу генерации сообщений об ошибках по их коду с помощью...

10
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
18.11.2023, 11:36
Цитата Сообщение от FouRed Посмотреть сообщение
Сегодня впервые столкнулся с такой проблемой.
С какой проблемой? Где в вашем вопросе процитировано полное сообщение об ошибке? Где в вашем вопрсе указана строка, в которой ошибка рапортуется? О чем речь вообще?

Что за код вы привели? Где имена файлов? Разве что мой дар ясновидения подсказывает мне, что заголовочные файлы "transform2d.h" и "uiinteractivity.h" включают друг друга циклически.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
18.11.2023, 11:45  [ТС]
совсем забыл: error C2079: 'fui::transform2D::interactivity' uses undefined class 'fui::uiinteractivity'
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
18.11.2023, 12:16
Цитата Сообщение от FouRed Посмотреть сообщение
совсем забыл: error C2079: 'fui::transform2D::interactivity' uses undefined class 'fui::uiinteractivity'
Заголовочные файлы "transform2d.h" и "uiinteractivity.h" включают друг друга циклически.

Вот это

C++
7
#include "transform2d.h"
Зачем было сделано?
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
18.11.2023, 12:38  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Заголовочные файлы "transform2d.h" и "uiinteractivity.h" включают друг друга циклически.
Вот это
C++Выделить код
1
/* 7 */ #include "transform2d.h"
Зачем было сделано?
а без этого никак
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
18.11.2023, 13:03
Цитата Сообщение от FouRed Посмотреть сообщение
а без этого никак
Это как это "никак"? Строка

C++
10
class transform2D;
как раз свидетельствует о том, что автор кода изначально собирался обойтись без "этого". Но потом вдруг ни с того ни с сего сделал

C++
7
#include "transform2d.h"
то есть устроил циклическое включение.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
18.11.2023, 13:31  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
как раз свидетельствует о том, что автор кода изначально собирался обойтись без "этого". Но потом вдруг ни с того ни с сего сделал
если Вы предлагаете просто удалить #include "transform2d.h", то тогда откуда будут доступны поля класса из этого файла?
10 строка не создает конфликт, а только его убирает.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
18.11.2023, 14:07
Цитата Сообщение от FouRed Посмотреть сообщение
если Вы предлагаете просто удалить #include "transform2d.h", то тогда откуда будут доступны поля класса из этого файла?
Поля класса у вас используются только в файле реализации. Вот в файле реализации и надо было делать #include "transform2d.h". А вы сделали включение в заголовочный файл, получив в результате зацикленное включение.

Цитата Сообщение от FouRed Посмотреть сообщение
10 строка не создает конфликт, а только его убирает.
10 строка вообще ничего осмысленного не делает, кроме того, что приводит к "непонятным" сообщениям об ошибках. Что и произошло в вашем случае.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 21
18.11.2023, 14:10  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
10 строка вообще ничего осмысленного не делает, кроме того, что приводит к "непонятным" сообщениям об ошибках. Что и произошло в вашем случае.
это forward declaration, почитайте
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
18.11.2023, 14:45
Лучший ответ Сообщение было отмечено FouRed как решение

Решение

FouRed, не понятно чего вы спорите. Вам все правильно говорят.
Перенесите #include "transform2d.h" из uiinteractivity.h в uiinteractivity.cpp.

Добавлено через 23 минуты
FouRed, Error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
18.11.2023, 16:29
Цитата Сообщение от FouRed Посмотреть сообщение
это forward declaration, почитайте
Почитайте сами. Весь смысл выполнения forward declaration класса как раз и заключается в том, чтобы не включать сюда весь заголовочный файл этого класса. Ибо в ряде случаев включать весь файл просто нельзя (у вас именно так).

А вы и forward declaration сделали, и весь заголовочный файл включили. Результат налицо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2023, 16:29
Помогаю со студенческими работами здесь

Подскажите, что от меня требуется?
Общие указания к выполнению работы. 1. Объединить все лабораторные работы 1 -6 в один большой проект. 2. Для каждой лабораторной работы...

Подскажите, что от меня требуется
Не понял суть задания Для Задания 2 напишите программу, которая вычисляет значение функции от двух аргументов х и у , которая задана...

неполнимаю что вообще от меня требуется)
На пространстве формы изображен календарь за май текущего года с горизонтальным расположением недель. Рамка красного цвета в виде квадрата...

не могу понять что от меня требуется
задачка: Создайте проект, содержащий шаблон-раму, который содержит три компонента: Edit, ListBox, Button. Вставьте созданный шаблон-раму в...

Mathcad, не понимаю что требуется от меня сделать
1. Получить решение уравнения относительно выбранной искомой переменной символьно. 2. Записать аналитическую модель в виде уравнения...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru