поле workarea_yield - которое представляет из себя Box (один из виджетов библиотеки FLTK). Но не смотря на то, что класс в котором я с ним работал наследовался от класса в котором создавалось окно на котором должен быть был Box , ничего не отобразилось. Поэтому я создал workarea.h и оставил поле там, чтобы использовать его в файле, где я создаю остальной пользовательский интерфейс для программы. Но при попытке использовать его в main.cpp , но программа его не видит. Если я сделаю его статическим, жалуется уже компилятор. К тому же я предполагаю, что это поле окажется пустым, поскольку его реализация находится в workarea.cpp . Каким вообще образом это организовывается? В целом, структура проекта уже выглядит достаточно запутанной.
Похоже мне нужно какое-то видео или руководство по организации проекта, чтобы почитать пол дня и чтобы получилось разобраться с сегодняшними проблемами
Буду очень благодарен за помощь
у вас три уникальные ссылки и четыре уникальных названия файла
Добавьте в конструктор Workarea аргументы, как у Photoeditor и прозрачно передайте их в конструктор Photoeditor Workarea :: Workarea(int w, int h, const char* title) : Photoeditor(w, h, title) { // ... } Эту строку удалите Photoeditor editor(640, 480, "photoeditor");
А где в таком случаи создавать экземпляр класса и как именно это поможет?
Photoeditor
Он создастья вместе с Workarea, потому что вы унаследовали Workarea от Photoeditor
Вы сказали удалить строку Photoeditor editor(640, 480, "photoeditor"); , но ведь она инициализирует окно (указывает ширину, высоту и название). Где теперь это делать?
У вас будет строка Workarea workarea(640, 480, "photoeditor");
Очень разумное решение. Но всё равно Box почему-то не отображается, а вот окно с кнопкой отображается
Уже какой-то прогресс
Нет, окно и раньше отображалось
Я могу скинуть изменения
Может надо еще вызвать? workarea_yield->show();
Всё исправил! Спасибо всем за помочь!
Так расскажите, всем же любопытно, как исправили
Не уверен, что всем любопытно, но. Поставил перед всеми родительскими классами public, убрал метод show() из конструктора Photoeditor и поставил в конструктор Workarea
Поле родителя родителя будучи публичным без явного указания обратного становится приватным для внука?
у классов по умолчанию приватное наследование
Я ж тебе сказал - ПИШИ ВСЁ В ОДНОМ ИСХОДНОМ ФАЙЛЕ!
Да, но поскольку я могу использовать его непосредственно в своём классе при наследовании , я предполагаю там явно указан модификатор методов, которые я использую в своём классе
Как я и говорил ранее, я пишу его прежде всего не для того, чтобы сделать программу, не для того, чтобы поставить галочку, а чтобы - научится. Самый главный пробел в моих знаниях - это работа с проектом в котором несколько модулей. И поскольку я: прежде всего делаю обучающий проект - для меня нерациональным будет пытаться делать проект в одном файле и всё равно не научится спустя столько времени использовать проект с несколькими файлами
Напиши сначала В ОДНОМ ФАЙЛЕ , может что-то поймёшь. Потом будешь разбивать на кусочки. И тоже что-то поймёшь. Так ты не поймёшь ничерта никогда, потому что никакого руководства по организации проектов в С++ нет.
Как только приватно унаследовались, вы скрыли поля и методы родителя от всех Для внука в том числе
У меня за всё время, возникла только одна проблема связанная с понимание библиотеки FLTK и то, она бы не возникла, если бы я не писал проект в нескольких файлах. В итоге написав его в одном файле, особых проблем (кроме дискомфорта, проект не маленький) у меня не возникнет. Создав проект в одном файле, мне ко всему придётся мучатся и не делать всё "с чистого листа", а растаскивать готовый проект по разным файлам из-за чего он будет ломаться ещё обильнее. Те вещи, которые помогли мне сегодня, я надолго усвоил и сталкивался с теми же вещами о которых здесь спрашивал повторно, но уже знал, как их решать. На этом и строится обучение - учится на собственных ошибках или если мои знания недостаточно глубокие, чтобы предположить эту ошибку. Для этого я и нахожусь в чате для новичков, потому, что загуглить эти проблемы сложно, смотреть кучу видео в надежде найти ответ очень долго, таким образом те - кто желали помочь мне , помогли и я усвоил материал намного быстрее. Вы можете не понять прикола "не тратить время на кучу видео", но если вообще проблема, которую просто невозможно решить в одиночку? Даже самая сложная проблема, основывается либо на отсутствии глубинных знаний, либо на баге (чаще всего в первом), но вы - в отличии от меня, задаёте сложные вопросы, поскольку вы +- профессионал, но вы тоже могли бы просто покопаться в гугле, посмотреть кучу видео, потратить на это пол дня или день и всё равно добиться ответа без помощи других людей. Но для этого и созданы чаты для новичков, не чтобы он пустовал, поскольку где-то в дебрях интернета спустя день можно найти информацию и все день там копаются, без мысли о том, что можно спросить совета у знающих
Спасибо, буду иметь ввиду
И FLTK тебе не нужно. Вообще, графика, сеть, игры, - не нужны. Изучай язык сначала.
Я изучил его достаточно, чтобы наконец-то пожелать сделать хоть что-то. К тому же, мне нужно зарабатывать хоть какие-то деньги, бодай на простых проектах
Главный тезис: Илья +- профессионал 😂
Нужно было написать твёрдо Илья Профессионал - чтобы точно и метко победить в этом разговоре
Обсуждают сегодня