이 솔루션에는 (클래스 별 및 전역) 카운터에 대한 코드가 들어 있습니다.
extern size_t Global_counter; //In .cpp file define it: size_t Global_counter = 0;
template <class T>
class CountedClass
{
protected:
static size_t this_class_counter;
public:
static size_t GetThisClassCounter()
{
return this_class_counter;
}
static size_t GetGlobalCounter()
{
return Global_counter;
}
CountedClass()
{
++this_class_counter;
++Global_counter;
}
};
template <class T>
size_t CountedClass<T>::this_class_counter = 0;
샘플 사용 :
class A : public CountedClass<A>
{
public:
A() : CountedClass<A>()
{
}
};
class B : public CountedClass<B>
{
public:
B() : CountedClass<B>()
{
}
};
A a1;
A a2;
B b2;
std::cout<<A::GetThisClassCounter(); //prints 2
std::cout<<A::GetGlobalCounter(); //prints 3
std::cout<<B::GetThisClassCounter(); //prints 1
std::cout<<B::GetGlobalCounter(); //prints 3
이 질문 자체에 포함 된 확인하십시오. –
당신은 단일 또는 다중 스레드 프로그램입니까? –
@Mateusz Grzejek, 지금은 싱글 스레드 용으로하고 싶습니다. 그러나 미래의 요구 사항은 다중 스레드 일 수 있습니다. 당신이 말했듯이, 이것은 객체 프로파일 정보를 유지하고 객체 크기와 다른 객체 관련 정보를 추가하기위한 것입니다. – SNR