我试图在c ++中使用std :: thread但没有成功:
A.h
class A
{
public:
A();
void MainThread();
Init();
private:
std::thread currThread;
}
A.cpp
A::A()
{
}
void A::Init()
{
currThread = std::thread(A::MainThread);
//currThread = std::thread(&MainThread);
}
void A::MainThread()
{
while (true)
{
std::cout << "Just For Example...");
}
}
尝试使用MainFunction创建线程时,我在Init函数中遇到编译错误
我做错了什么,如何解决?
答案 0 :(得分:0)
由于MainThread()
方法不是静态的,它对于不同的对象会存在很多次,所以你需要指出你所指的是属于this
对象的方法(你的对象)正在调用Init()
。
您的代码有许多令人担忧的问题(语法错误,无限循环等)。您的示例代码(使用修复程序)应如下所示:
// A.hpp
#ifndef A_HPP
#define A_HPP
#include <thread>
class A
{
public:
void Init();
void MainThread();
private:
std::thread currThread;
};
#endif // A_HPP
// A.cpp
#include <iostream>
#include <thread>
#include "A.h"
void A::Init()
{
this->currThread = std::thread(&A::MainThread, this);
}
void A::MainThread()
{
//this loop will run forever
while (true)
{
std::cout << "Just For Example...";
}
}