Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.04.2021
Сообщений: 12

Ошибка undefined reference

17.02.2024, 19:59. Показов 1548. Ответов 7

Студворк — интернет-сервис помощи студентам
Всем добрый день! пиши программу, вроде все функции класса объявил и реализовал, в cmake все. Но компилятор выдает ошибку undefined reference(на скриншоте видно). В архиве лежит код программы и сам cmake. Прошу помочь
Миниатюры
Ошибка undefined reference  
Вложения
Тип файла: zip lab4.zip (2.0 Кб, 0 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2024, 19:59
Ответы с готовыми решениями:

Почему происходит ошибка undefined reference to hgeCreate
Всем привет. Я новичок по C++ и недавно решил освоить разработку игр. Скачал с интернета 2D движок для графики HGE, однако никак не могу...

Ошибка undefined reference при запуске программы с sfml
Всем привет! Решил попробовать данную либу (читал статейку на хабре и решил запустить простой пример), но при запуске ошибки говорят что не...

C++ QT. PlaySound и ошибка "Undefined reference"
Всем привет. Следующая проблема, Qt ругается на эту конструкцию при компиляции. void QtBitcoinTrader::playWav(QString wav, bool noBlink) ...

7
фрилансер
 Аватар для Алексей1153
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
17.02.2024, 20:37
dawd, даже не заглядывая в архив, предположу, что код шаблона раскидан по заголовку и cpp ? Нужно утащить всё в заголовок
0
0 / 0 / 0
Регистрация: 26.04.2021
Сообщений: 12
17.02.2024, 20:47  [ТС]
насколько я понимаю, я все правильно раскидал по заголовку и cpp, можете конкретно указать что не так?
0
фрилансер
 Аватар для Алексей1153
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
17.02.2024, 21:00
Цитата Сообщение от dawd Посмотреть сообщение
что не так
раскидывать не надо, надо всё разместить в заголовке
0
0 / 0 / 0
Регистрация: 26.04.2021
Сообщений: 12
17.02.2024, 21:03  [ТС]
почему? в заголовке должны быть только объявления, а в cpp реализация, у меня так и есть
0
фрилансер
 Аватар для Алексей1153
6465 / 5678 / 1131
Регистрация: 11.10.2019
Сообщений: 15,118
17.02.2024, 21:31
dawd, когда компилятор хочет сделать неявное инстанцирование шаблона, ему (компилятору) нужно видеть весь шаблон целиком.

С помощью явного инстанцирования можно "раскиданный" шаблон заставить работать, но для этого придётся прописать явные инстанцирования для всех типов, которые будут подставляться. Гемор тот ещё
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
17.02.2024, 23:32
Цитата Сообщение от dawd Посмотреть сообщение
почему? в заголовке должны быть только объявления, а в cpp реализация, у меня так и есть
"Реализация" у шаблона может быть только вследствие инстанцирования. Без инстанцирования шаблон - это просто чертеж. Чтобы провести инстанцирование чертеж нужен целиком.

Вот представьте что вы строите дом, и вам принесли папку с чертежами, а там одни текстовые заголовки чертежей, а содержимого нет. Можно ли что-то построить так? Вот и компилятор не может.
То, что вы называете "реализацией", на самом деле называется "определением" и оно, это определение, критически важно для того, чтобы создать "реализацию", когда шаблон будет инстанцироваться. В месте инстанцирование весь чертеж нужен целиком, по этой причине шаблон и размещают в заголовочном файле, чтобы в месте инстанцирования был полный доступ к его определению. Не забывайте, что каждый cpp-файл в составе единицы трансляции компилируется независимо. И при компиляции нет никакого доступа к содержимому соседнего cpp-файла.

Добавлено через 2 минуты
Цитата Сообщение от dawd Посмотреть сообщение
насколько я понимаю, я все правильно раскидал по заголовку и cpp
Обожаю такую самоуверенность. Но разве ваш вопрос возник бы, если бы вы и в самом деле все сделали правильно?
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13177 / 6813 / 1821
Регистрация: 18.10.2014
Сообщений: 17,237
18.02.2024, 11:51
Цитата Сообщение от dawd Посмотреть сообщение
почему? в заголовке должны быть только объявления, а в cpp реализация, у меня так и есть
Ну так а банальный здравый смысл вам не подсказывает, то шаблоны - это шаблоны? Почему вам не очевидно, что ни о каком "в заголовке должны быть только объявления, а в cpp реализация" для шаблонов речи быть не может?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2024, 11:51
Помогаю со студенческими работами здесь

Подключение SOCI к Dev-cpp, ошибка undefined reference to `soci::session::session
Доброе утро. Надеюсь не ошибся с темой, я подключаю SOCI с нуля на Dev-cpp. Установил компилятор GCC C++17, подключил, настроил...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу "С++ для чайников" Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

ошибка undefined reference to
Всем привет! подскажите, пожалуйста, почему выскакивает ошибка: undefined reference to `Thread::setCompleted()' collect2: ld...

ошибка undefined reference to `_imp___ZN2sf5Image12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE'|
Привет! Такая проблема: подключил sfml к codeblocks и скопировал тестовый код, все работает. но когда пытаюсь загрузить изображение выдает...

Ошибка undefined reference to
При сборке выбивает ошибку: undefined reference to `Atom:: DoBCC(float, int, int, int)'. Ткните носом, пожалуйста, где ошибка. Заранее...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru