gpt4 book ai didi

c++ - 如何在队列中存储位于 vector 中的对象的unique_ptr

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:03 26 4
gpt4 key购买 nike

所以我正在构建一个模拟器,以模拟一些负载平衡算法。我创建了 2 个核心和调度程序 vector ,如下所示:

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;
}

我的问题是我无法从 vector 中获取核心并将其存储在 Dispatcher 的队列中。我尝试了很多方法,但似乎 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&”的已知转换

如果有人能给我提示,我将不胜感激。提前致谢。

最佳答案

add_core_q 的函数签名采用 Core&。您正在传递一个 std::unique_ptr。

关于c++ - 如何在队列中存储位于 vector 中的对象的unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633323/

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