2

我通过 TicToc 教程从 OMNeT++ 和 C++ 开始。

我现在想对子模块 Tic 或 Toc 之一的行为进行修改,特别是在 handleMessage() 中。

目前,消息是通过将接收到的消息转发到另一个子模块来处理的,而不需要对消息进行任何操作。现在,我想更改此设置,以便 Tic 检查传入消息的字符串,如果值为“String 1”,则 if 将生成一条字符串值为“String 2”的新消息并将其发送到 Toc。

但是,当我这样做时,我得到错误“不同指针类型'cMessage'和'const char *'之间的比较缺少强制转换。

这是代码:

void Tic::handleMessage(cMessage *msg)
{
    if (msg == "String 1")
    {
       cMessage *msg2 = new cMessage ("String 2");
       send(msg2,"out");
    }
}

任何帮助表示赞赏。谢谢。

4

2 回答 2

3

我找到了解决方案:

if (strcmp("String 1", msg->getName())==0)
{}
于 2014-11-28T09:47:36.167 回答
0

我们对此知之甚少cMessage,但也许你的意思是

if (*msg == "String 1")

因为这会将 cMessage 对象指针的值msg(指针)与字符串文字值进行比较。

正如您所拥有的那样,您尝试将指针与字符串文字(char const*在此上下文中衰减为)进行比较,这没有任何意义(另请参阅如何比较指针?)。


更新在这里阅读更多内容http://www.omnetpp.org/doc/omnetpp/api/index.html看起来上面的内容不起作用。

事实上,您可能想阅读一些成员属性(信息、详细信息、封装的 cPacket 等)以检查消息

于 2014-11-25T15:28:03.970 回答