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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
#1

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

13.12.2010, 14:05. Просмотров 3006. Ответов 4
Метки нет (Все метки)

Привет всем;

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

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++
Ребята подскажите, как создать массив объектов класса с инициализацией каждого? CLASS1* class1; //нужно к примеру 5 объектов class1...

Как организовать интерфейс в виде абстрактного класса? - C++
У меня есть задание, вот его часть: - расчёты движения предмета должны осуществляться в библиотеке, для которой нужно создать интерфейс...

Счетчик объектов класса - C++
Всем доброго времени суток. Изучая язык С++ по книге Лафоре столкнулся с задачей которую не могу решить (будет скриншот задачи) точнее не...

Счетчик запуска метода класса - C++
Добрый день. Мне нужен счетчик запуска метода класса. class A { public: ... void B (void) { static counter = 0; }

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

Организовать хранение данных с применением контейнерного класса set - C++
День добрый! Информационная система содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
13.12.2010, 14:28 #3
Если вы нигде ни инициализировали статический элемент, будет выдано сообщение о неразрешенной внешней ссылке.
Архангельский "Программирование в C++Builder"
C++
1
 static int count = 0;
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
13.12.2010, 14:30  [ТС] #4
Спасибо, заработало, а можно немного подробнее в чем проблема то была?
Если не трудно

Day, Сори зевонул ответ
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
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();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2010, 02:44
Привет! Вот еще темы с ответами:

Организовать динамическое выделение памяти в конструкторе класса для соответствующих данных-членов - C++
Мне нужно, чтобы под элементы отводилась динамическая память, но я не знаю, как это можно реализовать. #include &lt;iostream&gt; ...

Организовать арифметику класса ( сложение вычитание и сравнение) в виде именованных функций, сохраняющих результат в объекте «this» - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class String { private: char*...

Приём константных векторов класса, как аргументов в методе другого класса - C++
Есть такой класс: class Order { private: int numberOrder; map &lt;string, int&gt; catalogDish; double totalCost; public: ...

Как получить private переменную класса, функцей членом другого класса - C++
Игра змейка: Есть класс поле в котором содержится размеры поля: class field { private: int FIELD_START; int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.12.2010, 02:44
Ответ Создать тему
Опции темы

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