Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
#1

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

09.08.2013, 13:00. Просмотров 838. Ответов 13
Метки нет (Все метки)

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

Передача метода класса в качестве параметра для метода другого класса - C++
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна...

Вызов метода класса из метода другого класса - C++
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Ошибка при вызове метода класса в методе другого класса - C++
Господа программисты, возникла такая проблема. При вызове метода класса в методе другого класса выходит такая ошибка " нестандартный...

Вызов динамического метода класса по указателю на объект класса - C++
Как это можно сделать? И хотелось бы как можно проще.

Вызов метода внутреннего класса методом внешнего класса - C++
Не могу разобраться как реализовать вложенный класс и как его вызвать. Занимаюсь по Лафоре, про вложенные классы ничего, а задача в конце...

13
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 будет обнулятся?
Вообщем ты создаеш переменную общюю для всех экземпляров класса и плюсуеш ее в методе !
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 13:06 #3
Цитата Сообщение от fuelcs Посмотреть сообщение
Вопрос: при создании нового объекта класса, static counter будет обнулятся?
Нет. А тебе надо чтобы обнулялся?
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
09.08.2013, 13:07 #4
fuelcs, нет. Инициализируется она один раз. А вот если написать так:
C++
1
2
static counter;
counter = 0;
тогда будет обнуляться каждый раз
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 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++;
    }   
    ...
}
0
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:09  [ТС] #6
castaway, да. Метод должен пошагово (с каждым запуском) выполнять определенные дествия...
0
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';
}
0
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
09.08.2013, 13:12  [ТС] #8
alex1392, Мне не нужен счетчик объектов
0
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();
0
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;
...
массив с координатами.

Мой метод должен с каждым запуском прорисововать следующую координату...
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 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++;
    }   
    ...
}
Что не сходится? Для каждого экземпляра свой счетчик.
1
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
09.08.2013, 13:22 #12
Отлично разобрались ты пишиш змейку теперь уточни в каком моменте и зачем тебе нужна прорисовка следующей кординаты ! ведь в оригинале у тебя есть код направления движения
допустим что 87 это код направления влево и каждую итерацию прорисовки ты создаеш в масиве новую кординату с уминшением значения y который отвечает за размешение по вертикали и все остальные элементы сдвигаеш на arr[i+1]=arr[i]; вроди этого

Эх нинашол своей змейки (( дома дето валяетсо ((
0
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, спасибо, наверное так и сделаю, вроде больше альтернативы нету...
Просто очень не хотелось вводить лишнюю переменную в класс, а сделать ее локальной...
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 14:03 #14
Цитата Сообщение от fuelcs Посмотреть сообщение
Просто очень не хотелось вводить лишнюю переменную в класс
Почему "очень" ? В этом нет ничего страшного, в твоем случае думаю тем более.
0
09.08.2013, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2013, 14:03
Привет! Вот еще темы с ответами:

Вызов метода класса без создания экземпляра класса. - C++
В общем мне для функционирования одной программы нужно постоянно вызывать метод одного из классов. Я это делаю с помощью new - delete. Мне...

Обработка метода класса в зависимости от типа данного класса - C++
Имеется класс родителя A с методом Update(), этот класс имеет 2 дочерних класса B, C, каждый из них имеет свой метод обработки Update:...

Вызов метода базового класса из класса-потомка - C++
Нужно вызывать из метода, переопределенного в потомке, соответствующий метод базового класса. При этом они являются виртуальными. Вот...

Не удается обратиться к свойству класса из метода класса - C++
Пишу хедер для работы с файлами такой структуры: nametype1 name1 name2 name3 name4 nametype2


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

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

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