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

Счетчик объектов класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Список файлов и конкатенация строк http://www.cyberforum.ru/cpp-beginners/thread1493206.html
Здравствуйте. В этом коде std::vector<std::string> Files(0); // вектор с файлами wchar_t* Buffer = new wchar_t; // создание массива символов для приведения типа переменной пути mbstowcs(Buffer, p.c_str(), p.length()); // преобразование переменной в массив widechar Directories.emplace_back(p); // занесение введенного пользователем...
C++ Почему течет память ? пишу небольшой класс по работе с двусвязными списками часть класса List::List() { head = nullptr; http://www.cyberforum.ru/cpp-beginners/thread1493187.html
C++ Перегрузка ifstream и ofstream для работы с файлами в little-endian формате?
Всем привет, мне нужно реализовать классы для работы с файлами в little-endian формате. Для этого задумал сделать public-потомки соответствующих классов ввода-вывода, и перегрузить методы, непосредственно читающие/пишущие в поток. Основная проблема заключается в том, что я не знаю точный полный список всех вышеописанных методов обоих классов. Или лучше бросить эту затею, и написать свой велосипед...
Поместить указатели на экземпляры классов в динамический массив C++
Добрый день. Не идет данная тема. Прошу помощи. Задание: Поместить указатели на экземпляры классов в динамический массив. Для класса Person необходимо реализовать операторы < и >. В динамическом массиве реализовать функцию сортировки списка с использование указанных операторов. Нужна помощь с: 1. Указателями на экземпляр класса. 2. Посмотрите пожалуйста, правильно ли реализована...
C++ Error LNK2001: неразрешенный внешний символ ""public: void __thiscall CRenderTarget::phase_smap_direct http://www.cyberforum.ru/cpp-beginners/thread1493146.html
Доброго времени суток. Данный проект собирается на 2005 и 2008 студии. При попытке сбора на 2010 был ряд ошибок, с которыми я всё же справился, но на этапе компоновки случилось следующее. Ошибка 3 error LNK2001: неразрешенный внешний символ ""public: void __thiscall CRenderTarget::phase_smap_direct(class light *,unsigned int)"...
C++ Использование extern с функциями Добрый вечер! Скажем я задекларировал в каком-то модуле функцию extern void foo() ;. Но не описал её. Могу ли я при подключении этого модуля к моей программе описать тело этой функции в самой программе? подробнее

Показать сообщение отдельно
hoggy
6368 / 2586 / 451
Регистрация: 15.11.2014
Сообщений: 5,717
Завершенные тесты: 1
05.07.2015, 12:51     Счетчик объектов класса
Цитата Сообщение от Onigus Посмотреть сообщение
прошу готовое решение не скидывать
см под спойлером проффесиональную версию:

Кликните здесь для просмотра всего текста
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//делается простенький шаблончик
 
#include <cstddef>
 
#pragma once
 
#ifndef _ATOMIC_
    #error include <atomic> first    
#endif
 
#ifdef dVIEWNUMBERS
 
    #ifndef _IOSTREAM_
        #error include <iostream> first    
    #endif
 
    #undef dVIEWNUMBERS
#define dVIEWNUMBERS \
        std::cout << "instances = " << Instances() << std::endl;
#else
    #define dVIEWNUMBERS
#endif
 
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
 
//the number of instances a class
template<class T> class Copies
{
    typedef std::atomic<size_t> 
        count_t;
public:
    
    ~Copies()              
        { 
            // количество вызванных деструкторов больше, 
            // чем количество предшествующих им конструкторов
            // (возможная причина такой неисправности - 
            // запуск диструктора ресурса в многопоточной среде)
            assert( NumInstances() > 0 && 
                "ERROR: DESTRUCTOR CALLED WITHOUT CONSTRUCTOR" );
 
            --NumInstances(); 
            dVIEWNUMBERS; 
        }
 
    Copies()              { ++NumInstances(); dVIEWNUMBERS; }
    Copies(const Copies&) { ++NumInstances(); dVIEWNUMBERS; }
    Copies(Copies&&)      { ++NumInstances(); dVIEWNUMBERS; }
 
    static const count_t& Instances() { return NumInstances(); }
private:
    static count_t& NumInstances()
        { static count_t n = 0; return n; }
};
 
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
 
#define COPIES_USED_ 
// ну а дальше уже можно использовать:
 
 
struct sample : Copies
{};
 
 
#include <iostream>
 
sample foo() { return sample(); }
 
int main()
{
    std::cout << "Hello, world!\n";
    
    {
        sample s;
        {
            sample s1;
            auto s2 = s1;
            {
                sample ss( foo() );
            }
        }
        
    }
    
    std::cout<<"number of samples: "<< sample::copies()<<" (must be 0)\n";
        
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru