mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-15 16:36:03 +08:00
55 lines
974 B
Markdown
55 lines
974 B
Markdown
---
|
|
title: "instance_count"
|
|
---
|
|
|
|
{{< callout type="info">}}
|
|
Header: `instance_count.h`
|
|
{{< /callout >}}
|
|
|
|
Inherit from this class to count instances of a class.
|
|
|
|
Before: `20.25.0`
|
|
```cpp
|
|
etl::instance_count<typename T>
|
|
```
|
|
This class is not thread safe.
|
|
|
|
Since: `20.25.0`
|
|
```cpp
|
|
etl::instance_count<typename T, typename TCounter = uint32_t>
|
|
```
|
|
This class is thread safe if `TCounter` is an *atomic* type.
|
|
|
|
## Types
|
|
|
|
`type`
|
|
The type being counted.
|
|
|
|
`counter_type`
|
|
The type used for the counter.
|
|
|
|
## Member functions
|
|
|
|
```cpp
|
|
static const counter_type& get_instance_count()
|
|
```
|
|
**Description**
|
|
Returns a const reference to the current count.
|
|
|
|
---
|
|
|
|
```cpp
|
|
static void reset_instance_count()
|
|
```
|
|
**Description**
|
|
Resets the count to zero.
|
|
|
|
## Example
|
|
Instances of `My_Class` will be counted and can be accessed by the inherited member function `get_instance_count()`.
|
|
|
|
```cpp
|
|
class My_Class : public etl::instance_count<My_Class, std::atomic_uint8_t>
|
|
{
|
|
};
|
|
```
|