https://cppcpp.org/422/c-weak_ptrとvoidの理解と活用/