gpt4 book ai didi

c++ - 错误 C2248 : strange error when I use thread

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:55 25 4
gpt4 key购买 nike

我得到以下错误

Error 2 error C2248: 'std::thread::thread' : cannot access private member declared in class 'std::thread' c:\dropbox\prog\c++\ttest\ttest\main.cpp 11 1 ttest

Error 1 error C2248: 'std::mutex::mutex' : cannot access private member declared in class 'std::mutex' c:\dropbox\prog\c++\ttest\ttest\main.cpp 11 1 ttest

我的代码

#include <mutex>
#include <thread>

using namespace std;

struct Serverbas
{
mutex mut;
thread t;
};

struct LoginServer : Serverbas
{
void start()
{
t = thread(&LoginServer::run, *this);
}
void run() {}
};

int main() {}

最佳答案

t = thread( &LoginServer::run, *this);

成员函数 run 的第一个参数(在直接调用中隐含)应该是 this 指针,即只是 this。不要取消引用它。

当你取消引用它时,一切都会崩溃,因为你的 std::threadstd::mutex 成员阻止你的类类型的对象被复制——复制构造函数这些成员对象中的一部分是 private/deleted,that 就是您看到的错误。

所以:

t = thread(&LoginServer::run, this);

关于c++ - 错误 C2248 : strange error when I use thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com