【发布时间】:2015-12-14 11:59:15
【问题描述】:
所以我正在构建一个模拟器来模拟一些负载平衡算法。我创建了 2 个 Cores 和 Dispatchers 向量,如下所示:
std::vector<std::unique_ptr<Dispatcher> > vDisp;
std::vector<std::unique_ptr<Core> > vCore;
类调度器有一个核心队列,以便为它们分配作业。
std::queue<Core> disp_core_queue;
另外我还有一些函数可以处理这个队列:
void add_core_q(Core& p){ disp_core_queue.push(p); }
Core get_core_q(){ return disp_core_queue.front(); }
当程序初始化时,我会像这样填充核心和显示:
for (auto i=0; i<dispNumb; ++i)
{
vDisp.push_back(std::unique_ptr<Dispatcher> (new Dispatcher));
std::cout<<"Disp n."<<i<<" Created"<<std::endl;
}
我的问题是我无法从向量中获取核心并将其存储在调度程序的队列中。我尝试了很多方法,但似乎 C++ 出于各种原因惩罚了我。我的最后一次尝试是 Dispatcher 内部的这个:
int kore = random_core();
this->add_core_q(vCore.at(kore));
编译时出现这个错误:
错误:没有匹配函数调用'Dispatcher::add_core_q(_gnu_cxx::__alloc_traits >>::value_type&)'
候选人是:
void Dispatcher::add_core_q(Core&)
没有已知的参数 1 从 '__gnu_cxx::__alloc_traits >>::value_type {aka std::unique_ptr}' 到 'Core&' 的转换
如果有人能给我一个提示,我将不胜感激。提前致谢。
【问题讨论】:
标签: c++ c++11 vector queue unique-ptr