#include <string>
#include <thread>

class MyClass
{
    public:
        MyClass():DiskJobThread(){};
        ~MyClass();

        void DoDiskJobThread();

    private:
        int CopyThread(const std::wstring & Source, const std::wstring & Target) { return 0; }
        int MoveThread(const std::wstring & Source, const std::wstring & Target) { return 0; }
        std::thread DiskJobThread;
};

MyClass::~MyClass()
{
    DiskJobThread.join();
}

void MyClass::DoDiskJobThread()
{
    std::wstring Source/* = GetSource()*/;
    std::wstring Target/* = GetTarget()*/;
    int m_OperationType/* = GetOperationType()*/;
    DiskJobThread = std::thread(&MyClass::CopyThread, this, Source, Target);
    DiskJobThread = std::thread(&MyClass::MoveThread, this, Source, Target);
}

int main()
{}