0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 12
1

Оператор вызова функции объекта (Ошибка)

15.06.2019, 17:48. Показов 903. Ответов 3

Добрый день, столкнулся с ошибкой. Занимаюсь по учебнику C++ Primer 4-е издание.

Написал учебную программу связанную с оператором вызова функции объекта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <algorithm>
 
class GT_cls {
public:
    GT_cls(size_t val = 0): bound(val) { }
    bool operator()(const std::string &s) { return s.size() >= bound; }
private:
    std::string::size_type bound;
};
 
int main(int argc, const char * argv[]) {
    
    // 14.8.1
    std::string testS("test string");
    std::cout << std::count_if(testS.begin(), testS.end(), GT_cls(6)) << " words 6 characters or longer" << std::endl;
 
    return 0;
}
Компилятор выдает семантическую ошибку:
Bash
1
No matching function for call to object of type 'GT_cls'
Проверял на разных компиляторах:
clang (Apple LLVM version 10.0.1 (clang-1001.0.46.4));
gcc (gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04));

Подскажите пожалуйста как исправить ошибку
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2019, 17:48
Ответы с готовыми решениями:

Передача функции указателя на метод класса и его объекта для вызова
std::thread позволяет в качестве исполняемой функций принимать метод класса и указатель на его...

Ошибка вызова шаблонной функции - C++
Читаю Прата, остановился на таком задании: Напишите функцию с интерфейсом в старом стиле, которая...

Ошибка вызова шаблонной функции
Вообщем у меня вопрос такой: Использую MVS 2010. Пишу шаблон функции для поиска максимального из...

Перегруженный оператор сдвига '<<' не функции-члена класса для объекта ostream
Добрый день. В учебнике попалось на первый взгляд простое задание: #include &lt;iostream&gt; int...

3
Модератор
Эксперт С++
12118 / 9786 / 5913
Регистрация: 18.12.2011
Сообщений: 26,260
15.06.2019, 18:04 2
Вы путаете понятие строки и одиночного символа.
count_if перебирает символы, поэтому класс GT_cls должен работать именно для символов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <algorithm>
 
class GT_cls {
public:
    GT_cls(char val = 0) : bound(val) { }
    bool operator()(const char &s) { return s > bound; }
private:
    char bound;
};
 
int main(int argc, const char * argv[]) {
 
    // 14.8.1
    std::string testS("Test String");
    std::cout << std::count_if(testS.begin(), testS.end(), GT_cls('a') ) 
        << " character greater then 'a'" << std::endl;
 
    return 0;
}
1
5233 / 2887 / 1208
Регистрация: 07.02.2019
Сообщений: 7,285
15.06.2019, 18:09 3
kavars, если нужно считать слова, то примитивный способ это инициализировать std::istringstream исходной строкой, а в алгоритм count_if передавать std::istream_iterator<std::string>
1
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 12
15.06.2019, 19:07  [ТС] 4
Спасибо за ответ, в итоге я еще раз проверил и оказалось, что в count_if передавалась не строка, а вектор строк. В этом была моя ошибка.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2019, 19:07
Помогаю со студенческими работами здесь

Ошибка вызова функции
Вроде всё делаю правильно,но когда запускаю програму и нажимаю на кнопку ,то выбивает...

Ошибка вызова функции
Пытаюсь вызвать def hod_kompjutera() Messege.soobsenie(2) Получаю ответ messagebox не...

Ошибка вызова функции
Всем доброго времени суток. Столкнулся со следующей проблемой: Есть файл db.inc.php с...

Ошибка вызова функции (GUI)
Приятного времени суток господа. Есть маленький вопрос по-поводу работы с GUI приложениями. Если я...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru