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

Как организовать счетчик объктов класса? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
13.12.2010, 14:05     Как организовать счетчик объктов класса? #1
Привет всем;

что-то не получается сделать подсчёт объектов класса
делаю так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
class MyClass 
{
    static int count;
public:
    MyClass ()
    {
        count++;
    }
};
 
int main ()
{      
    MyClass ob1, ob2;
    system("PAUSE");
    return 0;
}
Компилится хорошо, а вот построить проект не может выдает такую ошибку:
Код
Ошибка	1 error LNK2001: неразрешенный внешний символ ""private: static int MyClass::count" (?count@MyClass@@0HA)"	131.obj
Делаю VS2008
Помогите плиз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 14:05     Как организовать счетчик объктов класса?
Посмотрите здесь:

C++ Как организовать интерфейс в виде абстрактного класса?
C++ Организовать на основе существующего класса произвольный класс
Счетчик запуска метода класса C++
Как обраиться к функции класса через другую функцию класса (друга)? C++
C++ Организовать арифметику класса ( сложение вычитание и сравнение) в виде именованных функций, сохраняющих результат в объекте «this»
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.12.2010, 14:27     Как организовать счетчик объктов класса? #2
C++
1
2
3
4
5
6
7
8
9
10
11
class MyClass                                                                                                                                                                                   
{
        static int count;
public:
        MyClass ()
        {
                count++;
        }
};
 
int MyClass::count;
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
13.12.2010, 14:28     Как организовать счетчик объктов класса? #3
Если вы нигде ни инициализировали статический элемент, будет выдано сообщение о неразрешенной внешней ссылке.
Архангельский "Программирование в C++Builder"
C++
1
 static int count = 0;
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
13.12.2010, 14:30  [ТС]     Как организовать счетчик объктов класса? #4
Спасибо, заработало, а можно немного подробнее в чем проблема то была?
Если не трудно

Day, Сори зевонул ответ
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
14.12.2010, 02:44     Как организовать счетчик объктов класса? #5
Еще вот так можно, чтобы уже все внутри класса было:

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
////////////////////////////////////////////////////////////////////////////////////// 
#include <iostream>
#include <string>
////////////////////////////////////////////////////////////////////////////////////// 
typedef std::string  T_obj_name;
////////////////////////////////////////////////////////////////////////////////////// 
class A 
{
    const  T_obj_name  obj_name_;
    //--------------------------------------------------------------------------------
    static int count(const int  deltha = 0)
    {
        static int  counter = 0;                
        return  counter += deltha;
    }
public:
    A(const T_obj_name  obj_name = "noname") : obj_name_(obj_name)
    {
        count(1);
        std::cout << "Создан объект "        
                  << obj_name_
                  << ". "
                  << '\t';
        print_objects_count();                                     
    }
    //--------------------------------------------------------------------------------
    ~A()
    {
        count(-1);
        std::cout << "Удален объект "
                  << obj_name_
                  << ". "
                  << '\t';
        print_objects_count();                                     
    }
    //--------------------------------------------------------------------------------
    static void  print_objects_count()
    {
        std::cout << "Всего в программе "
                  << count()
                  << " объектов класса A."
                  << std::endl;        
    }
};
////////////////////////////////////////////////////////////////////////////////////// 
int main ()
{  
    std::locale::global(std::locale(""));
    A::print_objects_count();
    A   a("a");
    A*  arr = new A[2];
    delete[]  arr;
    A  b("b");
    A* arrrr = new A[3];
    A::print_objects_count();
}
Yandex
Объявления
14.12.2010, 02:44     Как организовать счетчик объктов класса?
Ответ Создать тему
Опции темы

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