std::thread class 方法错误

std::thread class method errors

我正在尝试在基于网格的地形上逐行创建线程 运行(我不是问这是否有效,我只是在测试一些东西)但我不断遇到 2 个错误:

首先是如果我不将函数作为

&DJM::Terrain:GenBlocks

编译器告诉我在开头附加 & 但是当我使用引用时它给我一个连接到 xmemory

的单独错误
error C2248: 'std::thread::thread' : cannot access private member declared in class 'std::thread'
1>          d:\program files\visual studio 2012\vc\include\thread(73) : see declaration of 'std::thread::thread'
1>          d:\program files\visual studio 2012\vc\include\thread(32) : see declaration of 'std::thread'

我真的不明白为什么。我在多个地方读到过,您应该将 this 作为第二个参数,但这给出了与上面完全相同的错误。我也尝试过将 i 作为 std::ref 传递,但这会产生相同的错误。

    for(size_t i = 0; i < mHEIGHT; ++i){
            std::thread t(&DJM::Terrain::GenBlocks, &i);
            mThreads.push_back(t);
    }

    for(std::vector<std::thread>::iterator iter = mThreads.begin(); iter != mThreads.end(); iter++){
            iter->join();
    }

相当大的代码文件,所以我宁愿不 post 整个 class,但如果我 posted 的代码没有直接错误,我' d 很高兴 post 剩下的代码。注意mThreads是作为成员变量存储的

std::threads 无法复制。将其移动到向量中:

mThreads.push_back(std::move(t));