Bud*_*nga 4 c++ multithreading c++11 visual-studio-2012
我试图创建一个类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);
}
}
Run Code Online (Sandbox Code Playgroud)
//在main.cpp中
void main(){
Parallel p;
p.join();
thread t(print);
t.join();
system("Pause");
}
Run Code Online (Sandbox Code Playgroud)
问题是如何定义一个线程类的适当子类,该线程类具有以函数名作为参数的重载构造函数,并且当定义的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
当您尝试调用'p.join()'时,有关“使用'private'继承”的错误是因为您已编写:
class Parallel:thread
Run Code Online (Sandbox Code Playgroud)
什么时候应该写:
class Parallel : public thread
Run Code Online (Sandbox Code Playgroud)
默认值为私有继承,这意味着基类的所有方法在继承类上都变为私有。如果您希望继承是可访问的,则必须指定继承应该是公共的。
| 归档时间: |
|
| 查看次数: |
8782 次 |
| 最近记录: |