|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|||||||||||
Почему нельзя так делать? Конструктор перемещения?17.07.2019, 13:37. Показов 4228. Ответов 52
Метки нет (Все метки)
У меня возникла проблема с хранением объектов класса в векторе векторов, объявленном в другом классе. Класс, объекты которого пытаюсь хранить в векторе, генерируется автоматически мастером MFC, но суть не в этом.
Вот этот класс.
CEdit(); и нет некоего перемещающего конструктора.И вот мой класс
std::vector<std::vector<CEdit>> EditArea = { {m_firstMatrix00}, { m_firstMatrix01} };Думаю иерархия классов не важна, но всё же CWnd -> CEdit и CWnd -> CDialog -> CDialogEx -> CMatrix, то есть оба эти класса имеют одного потомка. Ошибка компилятора: 1>c:\users\host\source\repos\calcgpd\cal cgpd\cmatrix.h(53): error C2280: "CEdit::CEdit(const CEdit &)": предпринята попытка ссылки на удаленную функцию 1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.1 4.26428\atlmfc\include\afxwin.h(3907): note: в этом месте создано компилятором: "CEdit::CEdit" Что тут происходит? Почему нельзя так делать? Если в вектор накидывал бы числа, то проблем вообще никаких нет... Добавлено через 10 минут Опечатался. Думаю иерархия классов не важна, но всё же CWnd -> CEdit и CWnd -> CDialog -> CDialogEx -> CMatrix, то есть оба эти класса имеют одного -парента.
0
|
|||||||||||
| 17.07.2019, 13:37 | |
|
Ответы с готовыми решениями:
52
Объясните, почему так нельзя делать? Почему не вызывается конструктор перемещения? Почему не вызывается конструктор перемещения? И есть ли ошибки в коде? |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 17.07.2019, 13:50 | ||
Сообщение было отмечено Timurs как решение
РешениеХрани в этом векторе указатели на CEdit - std::vector<std::vector<CEdit *>> EditArea = { {&m_firstMatrix00}, { &m_firstMatrix01} };
2
|
||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
||
| 17.07.2019, 14:08 [ТС] | ||
|
oleg-m1973, я прогуглил было и написано в последнем комментарии, что
Спасибо, скомпилировалось!
0
|
||
|
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
|
|
| 17.07.2019, 14:12 | |
|
0
|
|
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 17.07.2019, 14:16 [ТС] | |
|
Krokodil9798, догадался, конечно, но с синтаксиса прозрел, пока не могу такой код читать, к сентябрю может прокачаюсь...
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 17.07.2019, 14:24 | ||
|
0
|
||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 17.07.2019, 14:41 [ТС] | |
|
oleg-m1973, была такая мысль, но я в редакторе ресурсов поля ввода рисовал. Тему на Visual C++ создавал, там первым стоит этот вопрос, а второй по размеру окна. То есть там рисунок с этими CEdit'ами как раз, 81 поле, условия на поле скрыть/показать невозможно писать вручную, их надо объединять. Так вот, чтобы обращаться к этому полю, то ему надо дать айди и объект через правый клик мыши (мастер сам генерит). А потому и такие пляски с бубном, а в векторе тоже не сделать, если сразу имя вписать, то он скажет необъявленный идентификатор.
Эдит контролы в вектор векторов и изменение размера окна
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 17.07.2019, 15:32 | ||
|
Кроме того, необязательно создавать эти контролы вручную. Проще динамически - в OnInitDialog
0
|
||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|||||||||||
| 18.07.2019, 08:53 [ТС] | |||||||||||
|
oleg-m1973, спасибо, всё сработало! Но почему-то не могу прикрутить скрытие/открытие полей ввода по выбору пользователя значений в комбо боксе, можете помочь?
Хедер
0
|
|||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 18.07.2019, 09:00 | ||
|
0
|
||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
||||||
| 18.07.2019, 09:27 [ТС] | ||||||
|
oleg-m1973, написал, но что-то не работает, даже перестала матрица по умолчанию выводится...
Что я не учел?
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 18.07.2019, 09:31 | |
|
0
|
|
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
||||||
| 18.07.2019, 09:46 [ТС] | ||||||
|
oleg-m1973, проинициализировал, по умолчанию 3x3 теперь выводит, но если в комбо боксе что-то выбрать, то матрицу всё равно не изменяет... Как думаете, в чем проблема?
oleg-m1973, работает!! Руки у меня кривые, вставил функцию в void CMatrix::OnShowWindow(BOOL bShow, UINT nStatus) и потому не работало. Честно говоря не очень понял механизм... Вначале отрабатывают сообщения по карте сообщений?
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||
| 18.07.2019, 10:01 | ||||||||
Просто показываешь/скарываешь контролы при каждом изменении i, j
0
|
||||||||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 18.07.2019, 11:54 [ТС] | |
|
oleg-m1973, разобрался как работает это всё дело. А не подскажите как сюда прикрутить размер окна, чтоб под матрицу окно подстраивалось?
Просто сейчас не очень красиво, экзэшник в архив прицепил
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 18.07.2019, 12:01 | ||
|
0
|
||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 18.07.2019, 14:30 [ТС] | |
|
oleg-m1973, спасибо огромное! Дальше думаю справлюсь)
Добавлено через 2 часа 22 минуты oleg-m1973, ещё вопрос такой, если справа от первой матрицы сделаю вторую, то после скрытия столбцов первой как сдвинуть вторую матрицу влево?
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 18.07.2019, 14:32 | |
|
0
|
|
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 21.07.2019, 23:51 [ТС] | |
|
oleg-m1973, спасибо, всё настроил - и окно, и контролы перенес. Но опять возникла проблема, как теперь в эти поля организовать запись и считывание чисел? Дальше логику уже смогу навесить.
Добавлено через 19 минут С установкой чисел разобрался
0
|
|
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
||||||
| 22.07.2019, 14:13 [ТС] | ||||||
|
oleg-m1973, я попытался считать строку с поля и установить её в соседнее поле.
Написал следующий код
0
|
||||||
| 22.07.2019, 14:13 | |
|
Помогаю со студенческими работами здесь
20
Почему нельзя вызывать конструктор без аргументов? Ошибка в классе или так делать нельзя?
Почему нельзя в конструкторе использовать параметр по умолчанию, если конструктор не встроен? Почему нельзя сделать так? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|