2

std::threadオブジェクトをクラス内に保持しようとしています。

class GenericWindow
{
    public:
        void Create()
        {
            // ...
            MessageLoopThread = std::thread(&GenericWindow::MessageLoop, *this);
        }
    private:
        std::thread MessageLoopThread;
        void GenericWindow::Destroy()   // Called from the destructor
        {
            SendMessageW(m_hWnd, WM_DESTROY, NULL, NULL);
            UnregisterClassW(m_ClassName.c_str(), m_WindowClass.hInstance);
            MessageLoopThread.join();
        } 
        void GenericWindow::MessageLoop()
        {
            MSG Msg;
            while (GetMessageW(&Msg, NULL, 0, 0))
            {
                if (!IsDialogMessageW(m_hWnd, &Msg))
                {
                    TranslateMessage(&Msg);
                    DispatchMessageW(&Msg);
                }
            }
        }
};      // LINE 66

与えられたエラー:

[66 行目] エラー C2248: 'std::thread::thread': クラス 'std::thread' で宣言されたプライベート メンバーにアクセスできません

このエラー メッセージは役に立ちませんstd::thread。クラスのプライベート メンバーにアクセスしようとしているわけではありません。

私のコードで何が間違っていますか? どうすれば修正できますか?

4

1 に答える 1