下記のようなクラスを書いてコンパイルすると怒られます。
class GameUser final
{
public:
GameUser(const GameUser&) = delete;
GameUser& operator=(const GameUser&) = delete;
static GameUser* getInstance();
private:
GameUser() = default;
~GameUser() = default;
static std::unique_ptr<GameUser> _instance;
};
Calling a private destructor of class 'GameUser'
GameUserクラスのデストラクタがプライベートで呼べない(´・ω・)
対応
std::unique_ptr<>::deleter_type
をfriend
にする。
class GameUser final
{
// 省略
friend std::unique_ptr<GameUser>::deleter_type;
// または
friend decltype(_instance)::deleter_type;
};