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

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

Восстановить пароль Регистрация
 
Mongrell
1 / 1 / 0
Регистрация: 21.05.2010
Сообщений: 10
19.11.2010, 14:11     Счетчик срабатываний предиката. #1
Здравствуйте. Суть моего вопроса такова:

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

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++ Счетчик нужен
счетчик цикла for C++
Для натурального числа определить истинность предиката «все цифры в записи числа равны» C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
19.11.2010, 14:56     Счетчик срабатываний предиката. #2
Ссылки должны инициализироваться в конструкторе или списке инициализации членов
Mongrell
1 / 1 / 0
Регистрация: 21.05.2010
Сообщений: 10
19.11.2010, 15:05  [ТС]     Счетчик срабатываний предиката. #3
А не подскажите как конкретно или где можно прочитать конкретно про темплейты? А то я пробовал много как, неизменно не работало.
volovzi
266 / 168 / 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     Счетчик срабатываний предиката.
Ответ Создать тему
Опции темы

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