我試圖做一個向量來提升線程對象。這個向量就是在調用類構造函數時從指針堆中創建的類的成員。它看起來像這樣。創建指針向量的boost ::線程指針
#ifndef NETWORKSYSTEM_H
#define NETWORKSYSTEM_H
#include "Network.h"
#include "Misc.h"
#include "Enumerators.h"
#include < vector>
#include < boost\thread.hpp>
#include < boost\filesystem.hpp>
#include < string>
#include < iostream>
class NetworkSystem
{
private:
Status NetworkStatus;
boost::filesystem3::path *ProjectPath;
std::string ProjectName;
//vector for pointers to networks
std::vector< Network*> *M_Network;
//Threading Components
boost::thread *MainThread;
std::vector< boost::thread *> *WorkerThreads;
void MainThreadFunction();
void WorkerThreadFunction();
public:
NetworkSystem();
~NetworkSystem();
int SetWorkerThreads(int P_WorkerThreads, bool Wait);
int TotalNetworks();
int WorkerThreads();
int PauseAtNetworksCompletion(bool Wait);
int PauseAtGenerationsCompletion(bool Wait);
};
#endif
// class constructor
NetworkSystem::NetworkSystem()
{
ProjectPath = new boost::filesystem3::path();
M_Network = new std::vector< Network*>;
WorkerThreads = new std::vector< boost::thread*>;
NetworkStatus = NO_PROJECT_OPEN;
MainThread = new boost::thread(&NetworkSystem::MainThreadFunction, this);
};
的Visual C++ 2010,我與升壓::線程指針的矢量誤差。它在構造函數中強調了WorkerThreads,並且表示「表達式必須是可修改的左值」。使用M_Network矢量做同樣的事情時,我沒有任何問題。如果您相信這種將我的工作線程組織到指針向量中的方法,以便我可以單獨初始化和管理它們,那麼我想我可能會使用線程組,但希望使此方法正常工作。 有什麼幫助嗎?謝謝。
「看起來是這樣的」不足以說你做錯了什麼。發佈完整的代碼。 – 2011-03-13 23:08:33
你想讓我發佈全班嗎? (50行) – contrapsych 2011-03-14 01:06:12
@ JAKE6459:最好的是最小的(但是完整的)版本,仍然存在問題,但50行是確定的。 – 2011-03-14 01:09:10