Я пытаюсь создать вектор указателей для увеличения потоковых объектов.Этот вектор является членом класса, который создается в куче из указателя при вызове конструктора класса.Это выглядит примерно так:
#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 выдает мне ошибки с вектором указателя boost :: thread.Он подчеркивает WorkerThreads в конструкторе и говорит, что «выражение должно быть изменяемым lvalue».У меня нет проблем, когда я делаю то же самое с вектором M_Network.Если вы считаете, что такой подход к организации моих рабочих потоков в вектор указателей, чтобы я мог инициализировать их и управлять ими по отдельности, плох, то я полагаю, что я МОГУ использовать группу потоков, но хотел бы, чтобы этот метод работал.Любая помощь?Спасибо.