c_-_c_templates:template_counter
C - C++ Templates - Template Counter
#include <iostream> #include <stddef.h> template <typename CountedType> class ObjectCounter { private: static size_t count; // number of existing objects protected: // default constructor ObjectCounter() { ++count; } // copy constructor ObjectCounter (ObjectCounter<CountedType> const&) { ++count; } // destructor ~ObjectCounter() { --count; } public: // return number of existing objects: static size_t live() { return count; } }; // initialize counter with zero template <typename CountedType> size_t ObjectCounter<CountedType>::count = 0; template <typename CharT> class MyString : public ObjectCounter<MyString<CharT> > { //... }; int main() { MyString<char> s1, s2; MyString<wchar_t> ws; std::cout << "number of MyString<char>: " << MyString<char>::live() << std::endl; std::cout << "number of MyString<wchar_t>: " << ws.live() << std::endl; }
c_-_c_templates/template_counter.txt · Last modified: 2020/07/15 09:30 by 127.0.0.1