Omnet++ 为相扑和静脉实现setDisallowed setAllowed时出错?

Omnet++ 为相扑和静脉实现setDisallowed setAllowed时出错?,omnet++,veins,sumo,Omnet++,Veins,Sumo,我试图在使用Velse时为mysumo场景(TraCi.lane.setDisallowed)实现一个TraCi命令。我在TraciCommandInterface.cpp中创建了一个新命令,如下所示: void TraCICommandInterface::Lane::setDisallowed(std::list<std::string> disallowedClasses) { TraCIBuffer buf = connection->query(CMD_SET

我试图在使用Velse时为mysumo场景(TraCi.lane.setDisallowed)实现一个TraCi命令。我在TraciCommandInterface.cpp中创建了一个新命令,如下所示:

void TraCICommandInterface::Lane::setDisallowed(std::list<std::string> disallowedClasses)
{
    TraCIBuffer buf = connection->query(CMD_SET_LANE_VARIABLE, TraCIBuffer() << LANE_DISALLOWED << laneId << TYPE_STRINGLIST << disallowedClasses);
    ASSERT(buf.eof());
}
void TraCICommandInterface::Lane::setDisallowed(std::list Disallowed类)
{

TraCIBuffer BUF=连接->查询(CMDJStIGLANEYAVER变量,TraciFiffER())P< AS 5,C++代码>代码>只有少数重载用于C++数据类型,特别是对于<代码> STD::String < /C> >,<代码> SimTimeTy> < /C> >和<代码> TraceCoORD < /C> >(参见)。所有其他类型都被发送为存储在内存中(通过铸造到代码> char *< /COD>)(参见)-对于
std::list
,这当然不是一个好主意

有关如何将
std::list
序列化为表示
TYPE\u STRINGLIST
SUMO/TraCI期望的二进制blob的可复制/粘贴代码,请参阅
TraCICommandInterface::Vehicle::changevhiclerroute(const std::list&edges)
,此代码可用

std::list<std::string> disallowedClasses = {"all"};
if (simTime()==20) {
    TraCICommandInterface* cInt = getCommandInterface();
    cInt->lane("ed_1_0").setDisallowed(disallowedClasses);
}