#include <iostream>
class Employee { /* fill in rest as before */
public:
Employee(/*...*/) { /* ... */
getCounter()++;
}
~Employee(/*...*/) { /* ... */
getCounter()--;
}
static auto getCount() -> std::size_t {
return getCounter();
}
private:
// replace counter static field in class context,
// with counter static variable in function context
static auto getCounter() -> std::size_t& {
static std::size_t counter = 0;
return counter;
}
};
int main() {
std::cout << "Initial employee count = " << Employee::getCount() << std::endl;
Employee emp1 {};
std::cout << "Count after an employee created = " << Employee::getCount() << std::endl;
{
Employee emp2 {};
std::cout << "Count after another employee created = " << Employee::getCount() << std::endl;
}
std::cout << "Count after an employee removed = " << Employee::getCount() << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCQljbGFzcyBFbXBsb3llZSB7IC8qIGZpbGwgaW4gcmVzdCBhcyBiZWZvcmUgKi8KCQlwdWJsaWM6CgkJICAgIEVtcGxveWVlKC8qLi4uKi8pIHsgLyogLi4uICovCgkJICAgICAgICBnZXRDb3VudGVyKCkrKzsKCQkgICAgfQoJCSAgICB+RW1wbG95ZWUoLyouLi4qLykgeyAvKiAuLi4gKi8KCQkgICAgICAgIGdldENvdW50ZXIoKS0tOwoJCSAgICB9CgkJCgkJICAgIHN0YXRpYyBhdXRvIGdldENvdW50KCkgLT4gc3RkOjpzaXplX3QgewoJCSAgICAgICAgcmV0dXJuIGdldENvdW50ZXIoKTsKCQkgICAgfQoJCXByaXZhdGU6CgkJICAgIC8vIHJlcGxhY2UgY291bnRlciBzdGF0aWMgZmllbGQgaW4gY2xhc3MgY29udGV4dCwKCQkgICAgLy8gICAgd2l0aCBjb3VudGVyIHN0YXRpYyB2YXJpYWJsZSBpbiBmdW5jdGlvbiBjb250ZXh0CgkJICAgIHN0YXRpYyBhdXRvIGdldENvdW50ZXIoKSAtPiBzdGQ6OnNpemVfdCYgewoJCSAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNvdW50ZXIgPSAwOwoJCSAgICAgICAgcmV0dXJuIGNvdW50ZXI7CgkJICAgIH0KCQl9OwogICAgCmludCBtYWluKCkgewoJc3RkOjpjb3V0IDw8ICJJbml0aWFsIGVtcGxveWVlIGNvdW50ID0gIiA8PCBFbXBsb3llZTo6Z2V0Q291bnQoKSA8PCBzdGQ6OmVuZGw7CgkKCUVtcGxveWVlIGVtcDEge307CglzdGQ6OmNvdXQgPDwgIkNvdW50IGFmdGVyIGFuIGVtcGxveWVlIGNyZWF0ZWQgPSAiIDw8IEVtcGxveWVlOjpnZXRDb3VudCgpIDw8IHN0ZDo6ZW5kbDsKCQoJewoJCUVtcGxveWVlIGVtcDIge307CgkJc3RkOjpjb3V0IDw8ICJDb3VudCBhZnRlciBhbm90aGVyIGVtcGxveWVlIGNyZWF0ZWQgPSAiIDw8IEVtcGxveWVlOjpnZXRDb3VudCgpIDw8IHN0ZDo6ZW5kbDsKCX0KCXN0ZDo6Y291dCA8PCAiQ291bnQgYWZ0ZXIgYW4gZW1wbG95ZWUgcmVtb3ZlZCA9ICIgPDwgRW1wbG95ZWU6OmdldENvdW50KCkgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9