Counting instances of individual derived classes

前端 未结 10 948
南笙
南笙 2021-01-06 04:42

I\'d like to be able to count instances of classes that belong in the same class hierarchy.

For example, let\'s say I have this:

class A;
class B: pu         


        
10条回答
  •  盖世英雄少女心
    2021-01-06 05:05

    There is a problem with proposed solutions: when you create B you A constructor will be called automatically and thus increment count of A.

    class A
    {
    public:
        A(bool doCount = true)
        {
            if (doCount)
                ++instanceCount_;
        }
    
        static std::size_t GetInstanceCount()
        {
            return instanceCount_;
        }
    
        virtual ~A(){}
    private:
        static std::size_t instanceCount_;
    };
    
    class B: public A
    {
    public:
        B(bool doCount = true):A(false)
        {
            if (doCount)
                ++instanceCount_;
        }
    
        static std::size_t GetInstanceCount()
        {
            return instanceCount_;
        }
    private:
        static std::size_t instanceCount_;
    };
    
    std::size_t A::instanceCount_ = 0;
    std::size_t B::instanceCount_ = 0;
    

提交回复
热议问题