Project

General

Profile

Talk #3188 » ex5_counter.cpp

Example 5: CRTP for instance counters - Glesaaen, Jonas, 2016-02-05 12:59

 
1
/*
2
 * Created: 05-02-2016
3
 * Modified: Fri 05 Feb 2016 11:26:13 CET
4
 * Author: Jonas R. Glesaaen (jonas@glesaaen.com)
5
 */
6

    
7
#include<iostream>
8

    
9
template <typename Type>
10
class Counter
11
{
12
public:
13
  Counter()
14
  {
15
    ++instances;
16
  }
17

    
18
  ~Counter()
19
  {
20
    --instances;
21
  }
22

    
23
  static unsigned instances;
24
};
25

    
26
class A : public Counter<A> {};
27
class B : public Counter<B> {};
28

    
29
template <typename Type>
30
unsigned Counter<Type>::instances = 0;
31

    
32
int main(int, char**)
33
{
34
  A a1, a2, a3, a4;
35
  B b1, b2;
36
  std::cout << Counter<B>::instances << std::endl;
37
}
(7-7/7)