|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
||||||||||||||||
'operator =' must be a non-static member26.10.2014, 01:37. Показов 7487. Ответов 12
Метки нет (Все метки)
'operator =' must be a non-static member Помещаю описание 'operator =' внутрь класса - все работает. Из-за чего так? // И еще, как правильней
0
|
||||||||||||||||
| 26.10.2014, 01:37 | |
|
Ответы с готовыми решениями:
12
Operator()' is not a member of 'const char* Ошибка: invalid use of non-static member function |
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 26.10.2014, 01:43 | |
|
1
|
|
|
Вездепух
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,221
|
|
| 26.10.2014, 01:43 | |
Сообщение было отмечено notemac как решение
Решение
Ну так а имя класса в определении вашего оператора куда пропало? Надо указывать имя класса: BinaryMinHeap<T>::operator = и т.д.
1
|
|
|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
||||||
| 26.10.2014, 02:00 [ТС] | ||||||
|
Спасибо, вот так заработало
alsav22, что значит "вот это"?
0
|
||||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||
| 26.10.2014, 02:08 | ||
|
Реализация оператора присваивания неправильно сделана: старая память не освобождается.
0
|
||
|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
|
| 26.10.2014, 02:13 [ТС] | |
|
alsav22, так если есть obj1, obj2.
Присваиваем obj1=obj2. Зачем obj2 очищать? (Так обычно делают, чтобы не было одинаковых объектов?)
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 26.10.2014, 02:17 | |
|
1
|
|
|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
|||||||||||
| 26.10.2014, 02:59 [ТС] | |||||||||||
|
alsav22, точно!!!! Спасибо.
alsav22, как правильно исправить? Error 1 error C2664: 'BinaryMinHeap<int>::BinaryMinHeap(const BinaryMinHeap<int> &)' : cannot convert argument 1 from 'int [7]' to 'int *&'
Заработало через указатель:
0
|
|||||||||||
|
Вездепух
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,221
|
|||||||||||||||||
| 26.10.2014, 03:27 | |||||||||||||||||
Сообщение было отмечено notemac как решение
РешениеУ вас в оригинальном (неправильном) коде ссылка объявлена как ссылка на указатель, а не ссылка на массив. Это, понятно, работать не будет. Правда можно было заменить тип параметра на 'const T* const &array' и все бы "заработало", но это такая же бессмыслица, как передача 'size_t' по ссылке. Не занимайтесь ерундой. Далее. Если уж вам очень хочется, то тип "массив" можно передавать по ссылке именно на весь массив, но только если его размер фиксирован на стадии компиляции. Например, если бы вы знали, что все массивы у вас будут размера именно 7, то конструктор можно было бы объявить так
1
|
|||||||||||||||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||
| 26.10.2014, 03:30 | |||||||
1
|
|||||||
|
Вездепух
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,221
|
|
| 26.10.2014, 04:05 | |
|
В моем примере с шаблонным конструктором, параметризованным через 'N', уместнее использовать не 'int', а тип 'size_t' для 'N'.
1
|
|
|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
|||||||||||
| 26.10.2014, 04:34 [ТС] | |||||||||||
|
TheCalligrapher, передаю по ссылке, чтобы сэкономить память размером с sizeof(size_t)
. Получается это извращенство... TheCalligrapher, есть разница между
Спасибо обоим, сейчас вникнусь и еще пометки сделаю про указатели обязательно!)
0
|
|||||||||||
|
Вездепух
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,221
|
|||||||||||||
| 26.10.2014, 06:24 | |||||||||||||
Сообщение было отмечено notemac как решение
РешениеПри этом доступ к размеру, переданному через ссылку, будет производится через этот замаскированный указатель, что потенциально медленнее, чем прямой доступ к локальной копии. Т.е. вы не только не экономите память, вы еще и зачем-то потенциально теряете в эффективности кода. (Оптимизатор во многих случаях сможет предотвратить эту потерю эффективности, но, еще раз, пользы или какой-то экономии от такого способа передачи все равно не будет.) Однако все это справедливо если вы хотите, чтобы ваш класс 'BinaryMinHeap<T>' мог содержать внутри массивы разного, неизвестного на стадии компиляции размера. Т.е. именно так, как это у вас сделано сейчас. Также ваша нынешняя реализация позволяет вам, при необходимости, увеличить размер массива на лету, т.е. сделать delete[] на старый массив и сделать new[] нового массива другого размера. (Я не знаю, нужно ли вам это или нет, но такая возможность потенциально имеется.) Но если вы в один прекрасный момент решите, что вам вся эта гибкость размеров не нужна и что размеры всех 'BinaryMinHeap<T>' будут известны заранее на стадии компиляции и никогда не будут меняться в процессе выполнения, тогда вы действительно можете сделать величину 'N' параметром всего шаблона класса, т.е. сделать именно вот так
Но тут уже вам виднее, что именно вам нужно.
1
|
|||||||||||||
| 26.10.2014, 06:24 | |
|
Помогаю со студенческими работами здесь
13
An object reference is required to access non static member
Ошибка в книге extra qualification 'Critter::' on member 'operator=' Массив в классе. Ошибка error: invalid use of non-static data member error C2352: 'OGLDevice::CreateGLWindow' : illegal call of non-static member function Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|