Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mongrell
1 / 1 / 0
Регистрация: 21.05.2010
Сообщений: 10
#1

Счетчик срабатываний предиката. - C++

19.11.2010, 14:11. Просмотров 466. Ответов 4
Метки нет (Все метки)

Здравствуйте. Суть моего вопроса такова:

Есть предикат:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <typename type, class b> 
class something
{
    
    public:
        something(){};
        bool operator() (const type& a) const
        {       
            b* B;
            if (B->condition(a) == 1)
                {
                    return 1;
                }
            else return 0;
            
        }
 
};
Мне надо добавить счетчик срабатываний условия этого предиката. Счетчик должен считать срабатывания во время прохода по каком-то массиву, но потому обнуляться и при проходе по следующему массиву тоже выдавать число срабатываний.

Я пытаюсь добавить переменную таким образом:

C++
1
2
3
        int& _counter;
        explicit something(int& counter) : _counter(counter)
        {};
Но в ответ получаю
"error C2758: 'something<type,b>::_counter' : must be initialized in constructor base/member initializer list"

Что это означает и как с этим бороться?

Используется предикат например так:
C++
1
2
int rem_obj_counter = 0;
iterator newEnd = std::remove_if(arr.begin(),arr.end(),something<TYPE, another_condition>(rem_obj_counter));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2010, 14:11     Счетчик срабатываний предиката.
Посмотрите здесь:

C++ Счетчик С++
Переменная-счетчик C++
C++ Нужен с счетчик
Счетчик циклов C++
Для натурального числа определить истинность предиката «все цифры в записи числа равны» C++
C++ Счетчик
C++ Счетчик попыток
C++ Электрический счетчик. С++
C++ С++ передача условия (предиката) в функцию
Счетчик в цикле for C++
C++ Написать связыватель для получения унарного предиката
Написать программу, которая определяет истинность предиката C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
19.11.2010, 14:56     Счетчик срабатываний предиката. #2
Ссылки должны инициализироваться в конструкторе или списке инициализации членов
Mongrell
1 / 1 / 0
Регистрация: 21.05.2010
Сообщений: 10
19.11.2010, 15:05  [ТС]     Счетчик срабатываний предиката. #3
А не подскажите как конкретно или где можно прочитать конкретно про темплейты? А то я пробовал много как, неизменно не работало.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
19.11.2010, 15:36     Счетчик срабатываний предиката. #4
Сомневаюсь, что этот фокус пройдёт, потому что предикаты, как и итераторы, передаются в алгоритмы не по ссылкам, а по значениям.
Mongrell
1 / 1 / 0
Регистрация: 21.05.2010
Сообщений: 10
19.11.2010, 20:10  [ТС]     Счетчик срабатываний предиката. #5
Спасибо, с этой проблемой я в итоге разобрался, написав вот так:

C++
1
2
3
4
5
6
7
    public:
        int& _counter;
 
        explicit something(int& counter) : _counter(counter)
        {
            _counter = counter;
        };
Но возникла еще одна задача. Нужно, чтобы структура понимала вот такую операцию:

C++
1
something<userClass, userClass_condition>(*(new int))(userClass());
К этому я даже не знаю как подступиться. Что означают два перечня аргументов? И на что вообще стоит гуглить, чтобы понять, что это такое?
Yandex
Объявления
19.11.2010, 20:10     Счетчик срабатываний предиката.
Ответ Создать тему
Опции темы

Текущее время: 15:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru