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

Как использовать в шаблонной функции типы vector или string, и только им присущие функции?

18.05.2020, 15:03. Показов 424. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как использовать в шаблонной функции типы vector или string, и только им присущие функции, чтобы не возникало ошибки c2228? Пример кода:
C++
1
2
3
4
5
6
7
8
9
template <typename A>
void func(A words) {
    if (typeid(A).name() == typeid(vector<string>&).name()) {
        words.push_back("");
    }
    else {
        cout << words[0] << endl;
    }
}
Да, знаю что так и должно быть, что происходит прямая подстановка типа, а статический массив string не работает с функцией push_back и в при попытке компиляции происходит ошибка.

Вопрос в том, как тут можно, и можно ли вообще, как нибудь выкрутиться? Чтобы при выборе определённого типа не проходила компиляция куска который не будет работать? Может игра не стоит свеч?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2020, 15:03
Ответы с готовыми решениями:

Как использовать функции string::find или функция strstr(str1 ,str2)
как использовать функции string::find или функция strstr(str1 ,str2) Добавлено через 3 минуты вернее какой у них синтаксис привдети...

Создание специализации шаблонной функции и задача на std::vector
Здравствуйте, подскажите, пожалуйста: 1.В чем ошибка объявления специализации шаблонной функции в header.h template...

Как вместо char* использовать vector<string>?
Здравствуйте, можете объяснить, как это сделать или проще привести какой-нибудь пример, чтобы стало понятно, как это применить к своей...

2
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.05.2020, 15:11
Цитата Сообщение от ХомоСС Посмотреть сообщение
Как использовать в шаблонной функции типы vector или string, и только им присущие функции, чтобы не возникало ошибки c2228? Пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <typename A>
void func(A &words) 
{
    if constexpr(std::is_same_v<A, vector<string>>) 
    {
        words.push_back("");
    }
    else 
    {
        cout << words[0] << endl;
    }
}
0
4 / 3 / 1
Регистрация: 04.02.2020
Сообщений: 130
18.05.2020, 15:21  [ТС]
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2020, 15:21
Помогаю со студенческими работами здесь

Тип контейнера как параметр шаблонной функции
Добрый день. Подскажите, пожалуйста, можно ли передавать тип контейнера как параметр в шаблонную функцию? Если да, то как это делается? ...

String, AnsiString или char * ? Что лучше использовать с классами? И как работать с типом string
Добрый вечер. Мне нужно в одну строку str1 поместить строку str2. Обе они типа string. В интернете толком не нашёл как это сделать. В...

Когда использовать функции String() и w_str()?
Запутался :)

Стоит ли использовать new delete[] или как вернуть массив из функции?
char* func() { char* Text = new char{'1', '2', '3', '\0'}; return Text; } void main() { char a; char b; char c; ...

Как правильно реализовать проверку типа передаваемого аргумента в шаблонной функции?
Доброго времени суток, уважаемые форумчане! Пытаюсь реализовать проверку типа аргумента, передаваемого шаблонной функции. Использую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Перейдите по ссылке:. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru