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

Счетчик запуска метода класса - C++

Восстановить пароль Регистрация
 
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:00     Счетчик запуска метода класса #1
Добрый день.
Мне нужен счетчик запуска метода класса.
C++
1
2
3
4
5
6
7
8
9
10
class A
{
public:
    ...
    void B (void)
    {
        static counter = 0;
    }   
    ...
}
Вопрос: при создании нового объекта класса, static counter будет обнулятся?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2013, 13:00     Счетчик запуска метода класса
Посмотрите здесь:

C++ Как организовать счетчик объктов класса?
C++ Вызов метода класса без создания экземпляра класса.
Оптимизация работы метода класса с объектами класса [C++] C++
C++ Вызов метода класса
Вызов метода внутреннего класса методом внешнего класса C++
C++ Шаблон метода класса
C++ Не удается обратиться к свойству класса из метода класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
09.08.2013, 13:03     Счетчик запуска метода класса #2
Цитата Сообщение от fuelcs Посмотреть сообщение
Добрый день.
Мне нужен счетчик запуска метода класса.
C++
1
2
3
4
5
6
7
8
9
10
class A
{
public:
    ...
    void B (void)
    {
        static counter = 0;
    }   
    ...
}
Вопрос: при создании нового объекта класса, static counter будет обнулятся?
Вообщем ты создаеш переменную общюю для всех экземпляров класса и плюсуеш ее в методе !
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 13:06     Счетчик запуска метода класса #3
Цитата Сообщение от fuelcs Посмотреть сообщение
Вопрос: при создании нового объекта класса, static counter будет обнулятся?
Нет. А тебе надо чтобы обнулялся?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
09.08.2013, 13:07     Счетчик запуска метода класса #4
fuelcs, нет. Инициализируется она один раз. А вот если написать так:
C++
1
2
static counter;
counter = 0;
тогда будет обнуляться каждый раз
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 13:09     Счетчик запуска метода класса #5
Чтобы счетчик был у каждого экземпляра класса можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
    int m_counter;
public:
    A() : m_counter(0) {}
    ...
    void B() {
        m_counter++;
    }   
    ...
}
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:09  [ТС]     Счетчик запуска метода класса #6
castaway, да. Метод должен пошагово (с каждым запуском) выполнять определенные дествия...
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
09.08.2013, 13:10     Счетчик запуска метода класса #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
class A
{
 
    
public:
    static int t;
    A()
    {
        t++;
    }
    ~A()
    {
        t--;
    }
    int get_t()
    {
        return t;
    }
};
 
 
int A::t = 0;
 
void main()
{
    cout << A::t << '\n';
 
    A a;
    cout << a.get_t() << '\n';
    A b;
 
    cout << a.get_t() << '\n';
    A c;
    cout << b.get_t() << '\n';
}
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:12  [ТС]     Счетчик запуска метода класса #8
alex1392, Мне не нужен счетчик объектов
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
09.08.2013, 13:18     Счетчик запуска метода класса #9
скажи тебе нужна шитать количевство вызовов методов для отдельных экземпляров или для всех экземпляров этого класса?
шетчик это пример а от него можно плясать в любую сторону
Ты задачу описал так что лично мне не ясно что именно тебе нужно

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
using namespace std;
class A
{
 
    
public:
    static int t;
    A()
    {
    }
    ~A()
    {
    }
    void metod_primer()
    {
        
        t++;
        cout<<"T++"<<"    T="<<t<<endl;
    }
    int get_t()
    {
        return t;
    }
};
 
 
int A::t = 0;
 
void main()
{
    cout << A::t << '\n';
 
    A a;
    a.metod_primer();
    a.metod_primer();
    a.metod_primer();
    a.metod_primer();
    cout << a.get_t() << '\n';
 
}
теперь оно шитает количевство раз которые ты вызвал метод void metod_primer();
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:18  [ТС]     Счетчик запуска метода класса #10
В меня в классе есть:
C++
1
2
3
4
...
private:
    std::deque<coords_class> snake_coords;
...
массив с координатами.

Мой метод должен с каждым запуском прорисововать следующую координату...
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 13:19     Счетчик запуска метода класса #11
Цитата Сообщение от castaway Посмотреть сообщение
Нет. А тебе надо чтобы обнулялся?
Цитата Сообщение от fuelcs Посмотреть сообщение
castaway, да.
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
    int m_counter;
public:
    A() : m_counter(0) {}
    ...
    void B() {
        m_counter++;
    }   
    ...
}
Что не сходится? Для каждого экземпляра свой счетчик.
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
09.08.2013, 13:22     Счетчик запуска метода класса #12
Отлично разобрались ты пишиш змейку теперь уточни в каком моменте и зачем тебе нужна прорисовка следующей кординаты ! ведь в оригинале у тебя есть код направления движения
допустим что 87 это код направления влево и каждую итерацию прорисовки ты создаеш в масиве новую кординату с уминшением значения y который отвечает за размешение по вертикали и все остальные элементы сдвигаеш на arr[i+1]=arr[i]; вроди этого

Эх нинашол своей змейки (( дома дето валяетсо ((
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:57  [ТС]     Счетчик запуска метода класса #13
alex1392, хотя я пишу под консоль, я использую message loop, для установки таймеров и обработки нажатий клавиатуры.
Для чего нудно? Хочу в конце игры (когда змейка себя съест) начиная с головы залить ее плавно красным цветом.
Но мне "параллельно" нужно ловить сообщения:
C++
1
while(GetMessage(&msg, NULL, 0, 0))
что бы они не собирались... Поэтому просто цикл я использовать не могу...

Добавлено через 25 минут
castaway, спасибо, наверное так и сделаю, вроде больше альтернативы нету...
Просто очень не хотелось вводить лишнюю переменную в класс, а сделать ее локальной...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2013, 14:03     Счетчик запуска метода класса
Еще ссылки по теме:

C++ Счетчик объектов класса
Обработка метода класса в зависимости от типа данного класса C++
C++ Вызов метода класса из DLL
Вызов метода родительского класса C++
Static в описании метода класса C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 14:03     Счетчик запуска метода класса #14
Цитата Сообщение от fuelcs Посмотреть сообщение
Просто очень не хотелось вводить лишнюю переменную в класс
Почему "очень" ? В этом нет ничего страшного, в твоем случае думаю тем более.
Yandex
Объявления
09.08.2013, 14:03     Счетчик запуска метода класса
Ответ Создать тему
Опции темы

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