C++ 邮箱进入SimGrid
我正在研究simgrid中的邮箱,查看文档中的示例,但是当我尝试编译示例时,会出现错误,主要是在邮箱->获取中。 我将把代码片段放在下面C++ 邮箱进入SimGrid,c++,simgrid,C++,Simgrid,我正在研究simgrid中的邮箱,查看文档中的示例,但是当我尝试编译示例时,会出现错误,主要是在邮箱->获取中。 我将把代码片段放在下面 if (rank == 0) { /* The root actor (rank 0) first sends the token then waits to receive it back */ XBT_INFO("Host \"%u\" send 'Token' to Host \"%s\"&quo
if (rank == 0) {
/* The root actor (rank 0) first sends the token then waits to receive it back */
XBT_INFO("Host \"%u\" send 'Token' to Host \"%s\"", rank, neighbor_mailbox->get_cname());
std::string msg = "Token";
neighbor_mailbox->put(&msg, token_size);
const auto* res = my_mailbox->get<std::string>();
XBT_INFO("Host \"%u\" received \"%s\"", rank, res->c_str());
} else {
auto* res = my_mailbox->get<std::string>();
XBT_INFO("Host \"%u\" received \"%s\"", rank, res->c_str());
XBT_INFO("Host \"%u\" send 'Token' to Host \"%s\"", rank, neighbor_mailbox->get_cname());
neighbor_mailbox->put(res, token_size);
}
if(秩==0){
/*根参与者(秩0)首先发送令牌,然后等待将其接收回来*/
XBT_信息(“主机\%u\”向主机\%s\”发送“令牌”,排名,邻居_邮箱->获取_cname());
std::string msg=“令牌”;
邻居\邮箱->放置(&msg,令牌\大小);
const auto*res=my_mailbox->get();
XBT_INFO(“主机\%u\”接收\%s\,排名,res->c_str());
}否则{
auto*res=my_mailbox->get();
XBT_INFO(“主机\%u\”接收\%s\,排名,res->c_str());
XBT_信息(“主机\%u\”向主机\%s\”发送“令牌”,排名,邻居_邮箱->获取_cname());
邻居\邮箱->放置(分辨率、令牌\大小);
}
该错误发生在const auto res=my_mailbox->getstd::string()中
错误:无法推断类型“auto”和
不允许使用类型名称替换
auto*res=my_mailbox->get()代码>使用const auto*res=static_cast(我的邮箱->get())
我猜我的邮箱->get()
不会返回指针。您确定它没有按值或(const
?)引用返回std::string
?)吗?是的,似乎错误毕竟在语法中。我使用const auto*res=static\u cast(我的邮箱->get())来修复它代码>