void HAVideo::get_stream_thread() { }std::thread start_get_stream(get_stream_thread);无法运行
时间: 2024-03-01 08:50:45 浏览: 18
在 C++ 中,如果您想要使用成员函数启动一个新线程,则需要提供一个对象实例作为该线程的参数。因此,在调用 `std::thread` 的构造函数时,您应该将对象实例和成员函数作为参数传递,而不是仅将成员函数作为参数传递。因此,您需要将 `HAVideo::get_stream_thread()` 函数定义为类的成员函数,并使用对象实例和该成员函数调用 `std::thread` 的构造函数。示例如下:
```c++
class HAVideo {
public:
void get_stream_thread() {
// 线程执行的代码
}
};
int main() {
HAVideo haVideo;
std::thread t(&HAVideo::get_stream_thread, &haVideo);
t.join();
return 0;
}
```
在上面的示例中,我们将 `HAVideo::get_stream_thread()` 函数定义为类的成员函数,并在 `main()` 函数中创建了 `HAVideo` 类的实例 `haVideo`。然后,我们使用对象实例和该成员函数作为参数,调用 `std::thread` 的构造函数 `t(&HAVideo::get_stream_thread, &haVideo)`,创建了一个新线程。最后,我们调用 `t.join()` 等待新线程完成。
请注意,如果您的 `HAVideo` 类继承自其他类,则需要使用虚函数来定义 `get_stream_thread()` 函数,以便在子类中正确地调用它。