Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 2
Регистрация: 29.09.2016
Сообщений: 111

Шаблон и возвращение булевых значений

27.12.2016, 17:23. Показов 2215. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

есть такой шаблон:
C++
1
2
3
4
5
6
7
8
template <typename T> T printResult(const char* message, bool pause, const T value)
{
    if (message[0] != '\0')
        cout << message << endl;
    if (pause)
        system("pause");
    return value;
}
Все работает, но когда передаю false/true вместо 3 аргумента - ошибка



как исправить?

Добавлено через 1 минуту
Error LNK1120 1 unresolved externals



Error LNK2019 unresolved external symbol "bool __cdecl printResult<bool>(char const *,bool,bool)" (??$printResult@_N@@YA_NPBD_N_N@Z) referenced in function "bool __cdecl SetData(struct ClientInfo *,unsigned int &,char const *,char const *,char const *,char const *,char const *)" (?SetData@@YA_NPAUClientInfo@@AAIPBD2222 @Z) Module2
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.12.2016, 17:23
Ответы с готовыми решениями:

Перебор всех значений трёх булевых переменных
Вобщем мне надо проверить функцию на тавтологию, для этого как я понимаю надо проверить чтобы конечная функция была всегда истинной при...

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

Возвращение значений из функции
как вернуть кроме значения структуры еще и значение переменной а типа int? struct STROKA { string name; int kolvo,ves; }; ...

10
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.12.2016, 17:24
В самой шаблонной функции ошибок нет, всё работает.
Ругается линкер на какое-то место, где эту функцию используют.
1
1 / 1 / 2
Регистрация: 29.09.2016
Сообщений: 111
27.12.2016, 17:27  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool SetData(ClientInfo* pObj, size_t& recordsCount, const char* sz1, const char* sz2,
    const char* sz3, const char* sz4, const char* sz5)
{
    if (pObj == nullptr || sz1 == nullptr || sz2 == nullptr || sz3 == nullptr ||
        sz4 == nullptr || sz5 == nullptr)
        return printResult("Неверный указатель на объект.",false , true);
 
    ClientInfo& record = pObj[recordsCount];
 
    record.szUid = sz1;
    record.szName = sz2;
    record.szSurname = sz3;
    record.szDate = sz4;
    record.szMoney = sz5;
 
    ++recordsCount;
 
    return 0;
}
вот сама функция
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.12.2016, 17:32
В данном вызове нет ошибок. А как располагаются данные функции в исходных файлах?
1
1 / 1 / 2
Регистрация: 29.09.2016
Сообщений: 111
27.12.2016, 17:35  [ТС]
в разных файлах, но рядом в том же файле, где вызывается шаблон с bool, есть вызов с int и все работает
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.12.2016, 17:41
Приведите описание расположения.
0
1 / 1 / 2
Регистрация: 29.09.2016
Сообщений: 111
27.12.2016, 17:43  [ТС]
в файле Source.cpp находится сам шаблон
в Source.h его определение
C++
1
template <typename T> T printResult(const char* message, bool pause, const T value);
в ClientInfo.cpp функция SetData
в ClientInfo.h определение

оба .cpp имеют такие инклюды
C++
1
2
#include "ClientInfo.h"
#include "Source.h"
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.12.2016, 17:45
Лучший ответ Сообщение было отмечено ChipChop как решение

Решение

Цитата Сообщение от ChipChop Посмотреть сообщение
в файле Source.cpp находится сам шаблон
в Source.h его определение
Определение шаблона должно быть полностью в header файле.
1
1 / 1 / 2
Регистрация: 29.09.2016
Сообщений: 111
27.12.2016, 17:47  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Определение шаблона должно быть полностью в header файле.
прямо с кодом?

Добавлено через 1 минуту
сработало...

а в чем прикол?
почему с другими типами работает, а бул - сломал все?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.12.2016, 18:00
Цитата Сообщение от ChipChop Посмотреть сообщение
а в чем прикол?
почему с другими типами работает, а бул - сломал все?
Это связано с инстанцированием шаблона.
Вы также можете явно написать специализацию для всех использумых типов в .cpp файле. С дублированием тела функции. Но думаю, что вы предпочтёте предыдущий вариант.
1
1 / 1 / 2
Регистрация: 29.09.2016
Сообщений: 111
27.12.2016, 18:01  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2016, 18:01
Помогаю со студенческими работами здесь

Возвращение трех значений
Как в функции возвратить три значения?

Возвращение из функций нескольких значений
Доброго времени суток. Нужна помощь. Дано задание: Напишите функцию swap(int&amp; a, int&amp; b, int&amp; c), которая изменяет значения ...

Возвращение и вывод вычисленных значений в классах
Пишу программу для вычисления корней уравнений и наткнулся на небольшую проблемку. есть класс head и 2 его дочерних: quadratic_equation...

Возвращение двух значений через ссылку и return
При выполнении программы функция возвращает количество и сумму чисел, находящихся между первым и последним отрицательными элементами. Через...

Шаблон функции для подсчета значений в массиве
Всем доброго времени суток. Очень прошу помочь написать программу. Нужно создать шаблон функции count() для подсчета числа появлений...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Семь 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. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru