Parallel
のサブクラスであるクラスを作成しようとしているstd::thread
ため、クラスは で定義されParallel.h
ていますが、メインメソッドは同じプロジェクト (ビジュアルスタジオ) の別のファイルで定義されています。以下のようにメソッドmain.cpp
でインスタンスを作成して関数Parallel
を実行するとコード セグメント: 私は C++ を初めて使用します。ここに "Parallel.h" があります。join()
main()
#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: 'Para::Parallel' は 'private' を使用して 'std::thread' C:\Users\Gamer\Desktop\PROJECQ\VC++@OMAQ を継承しているため、'std::thread::join' にアクセスできません\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