我正在尝试创建一个Parallel
作为子类的类std::thread
,因此我的类定义在 中Parallel.h
,但主要方法定义main.cpp
在同一项目(在 Visual Studio 中)的单独文件中。当我创建一个实例并在方法中Parallel
执行join()
函数时,如下所示main()
代码段:我是 C++ 新手,这里是“Parallel.h”-
#include<thread>
using namespace std;
namespace Para{
class Parallel:thread
{
public:
static void run(){
}
Parallel(void)
{
}
virtual ~Parallel(void)
{
}
inline static void start(Parallel* p){
// (*p).join();
}
virtual void Parallel::start(thread& t){
}
static void parallelize(Parallel& p1,Parallel& p2){
}
inline virtual Parallel* operator=(thread* t){
return static_cast<Parallel*>(t);
}
}
//在main.cpp中
void main(){
Parallel p;
p.join();
thread t(print);
t.join();
system("Pause");
}
问题是如何定义线程类的正确子类,该线程类具有以函数名作为参数的重载构造函数,在定义p.join()
编译器时也会在 VS2012 中给出以下错误:
错误 2 错误 C2247: 'std::thread::join' 不可访问,因为 'Para::Parallel' 使用 'private' 从 'std::thread' C:\Users\Gamer\Desktop\PROJECQ\VC++@OMAQ 继承\CQ47\CQ47\main.cpp 11
3 IntelliSense:函数“std::thread::join”(在“H:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\thread”的第 209 行声明)无法访问 c:\Users\Gamer\桌面\PROJECQ\VC++@OMAQ\CQ47\CQ47\main.cpp 11