gpt4 book ai didi

c++ - 通过与另一个成员的类成员函数调用线程时出现奇怪的行为。 CPP

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:47 24 4
gpt4 key购买 nike

我尝试了下一个代码:

class JustClass
{
public:
void JustFunc()
{
std::thread t(this->JustThread);
t.detach();
}

void JustThread()
{

}

private:

};

它应该不会有任何问题。我只是调用我的对象的一个​​函数来充当线程。但是我得到了下一个错误:

The Eroor I get on the codoe above

但如果我这样做:

class JustClass
{
public:
void JustFunc()
{
std::thread t(this->JustThread, 5);
t.detach();
}

void JustThread(int just_var)
{

}

private:

};

然后现在我得到这个 Eroor:

Error   2   error C3867: 'JustClass::JustThread': function call missing argument list; use '&JustClass::JustThread' to create a pointer to member   c:\users\micha\onedrive\מסמכים\visual studio 2013\projects\project2\project2\source.cpp 58  1   Project2

为什么会有这种奇怪的行为?

最佳答案

你像这样传递成员函数指针:

class JustClass
{
public:
void JustFunc()
{
std::thread t(&JustClass::JustThread, this);
t.detach();
}
void JustThread() {}
private:
};

对于你的第二个变体:

class JustClass
{
public:
void JustFunc()
{
std::thread t(&JustClass::JustThread, this, 5);
t.detach();
}
void JustThread(int just_var){}

如果函数被重载,您将需要选择重载。参见 Jonathan Wakely's Answer到一个相关的问题。另请阅读 this FAQ关于指向成员函数的指针。

关于c++ - 通过与另一个成员的类成员函数调用线程时出现奇怪的行为。 CPP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42297140/

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