gpt4 book ai didi

c++ - 创建指向 boost::thread 指针的 vector 的指针

转载 作者:行者123 更新时间:2023-11-28 08:22:31 24 4
gpt4 key购买 nike

我正在尝试创建一个指针 vector 来提升线程对象。然后,该 vector 是类的成员,该类是在调用类构造函数时根据指针在堆上创建的。它看起来像这样。


#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 指针 vector 的错误。它在构造函数中强调了 WorkerThreads 并表示“表达式必须是可修改的左值”。用 M_Network vector 做同样的事情时我没有问题。如果您认为这种将我的工作线程组织成指针 vector 以便我可以单独初始化和管理它们的方法不好,那么我想我可以使用线程组,但我想让这种方法起作用。有什么帮助吗?谢谢。

最佳答案

我遇到了和你类似的错误:

class A
{
int B;
public:
A()
{
B = 0;
}

int B();
};

建议:不要将您的成员函数命名为与您的成员数据相同的名称。

关于c++ - 创建指向 boost::thread 指针的 vector 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com