おはようございます!std :: threadでMVSE12のエラーC2248
私はマイクロソフトのVisual Studio ExpressでC++でマルチスレッドアプリケーションをコーディングしようとしています2012年
「メイン」機能はのタスクで、「永遠に」実行するスレッドを呼び出すという考え方たちオブジェクトを更新する。
これがメインです:
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <thread>
#include <iostream>//debug only
#include <fstream> //debug only
#include "dataCollectorFTL.h"
int _tmain(int argc, _TCHAR* argv[])
{
dataCollectorFTL dataCollector1;
//Launch thread which will run forever and get the data flows
dataCollector1.runDataCollector();
while(true){
//application running
}
return 0;
}
これは、クラス
#ifndef DATACOLLECTORFTL_H_INCLUDED
#define DATACOLLECTORFTL_H_INCLUDED
#include <thread>
class dataCollectorFTL {
public:
void runDataCollector();
void getData();
//constructor, destructor
dataCollectorFTL();
~dataCollectorFTL();
private:
HANDLE hProcess;
std::thread dataCollectorThread;
};
#endif // DATACOLLECTORFTL_H_INCLUDED
そして最後に ".cppファイル"
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <thread>
#include "dataCollectorFTL.h"
void dataCollectorFTL::runDataCollector(){
//lauch a non-local thread
dataCollectorThread = std::thread(&dataCollectorFTL::getData, this);
}
void dataCollectorFTL::getData(){
//some stuff
}
dataCollectorFTL::dataCollectorFTL(){
//some stuff
}
dataCollectorFTL::~dataCollectorFTL(){
dataCollectorThread.join();
}
の ".hの" ある問題があります私はそれを実行すると、この2つのエラーを私に与えます:
エラー1エラーC2248: 'std :: thread :: operator =':クラス 'std :: thread'で宣言されたプライベートメンバーにアクセスできないc:\ users \ damien \ documents \ visual studio 2012 \ projects \ recherche \ recherche \ datacollectorftl.h 233 1 Recherche
エラー4エラーC2248: 'std :: thread :: thread':クラス 'std :: thread' c:\ users \ damien \ documents \ visual studioで宣言されたプライベートメンバーにアクセスできない2012年のプロジェクト\ \ RECHERCHE \ RECHERCHE \ 233 1 RECHERCHE
datacollectorftl.h時間を節約するために、私はあなたにそれを伝えることができます:
-
を
- .hには何も変更されません。
- runDataCollectorメソッドの内容は何も変更されません。それが空である場合でも、私はまだ私は、私はクラスのメンバとして宣言しない場合、それは何も
を変更しない、
この記事を読んでいただきありがとうございました。ありがとうございました。また、何か助けていただきありがとうございます。
あなたはどこかで 'dataCollectorFTL'をコピー・アサインしようとしています。もちろんあなたが投稿したコードではありません。 – LogicStuff
両方のエラーが 'datacollectorftl.h 'の行番号233を強調表示します。その正確な行を投稿してください。コンパイラがどこに不平を言っているのかを知ることが難しくなりました。 –
表示されたコードは正常です。 http://coliru.stacked-crooked.com/a/2c1af3a84792c771。親の 'dataCollectorFTL'クラスをどこかにコピーしていないことを確認してください。エラーが表示されます。それはコピーと代入演算子をプライベートにし、エラーメッセージはコピーの場所を診断するのに役立ちます。そうでない場合は、[mcve]がここで助けます。 – Niall