OMNeT ++ TicToc расширение строковое сообщение

Я начинаю с OMNeT ++ и C ++, пройдя учебник по TicToc.

Теперь я хотел бы внести изменения в поведение одного из подмодулей 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");
}
}

Любая помощь приветствуется. Благодарю.

2

Решение

Я нашел решение:

if (strcmp("String 1", msg->getName())==0)
{}
3

Другие решения

Мы очень мало знаем о cMessage, но, возможно, вы имели в виду

if (*msg == "String 1")

Потому что это сравнило бы значение указателя на объект cMessage с помощью msg (указатель) на строковое литеральное значение.

Как вы это сделали, вы пытаетесь сравнить указатель на строковый литерал (который распадается на char const* в этом контексте), что не имеет смысла (см. также Как сравнить указатели?).


Обновить После прочтения здесь http://www.omnetpp.org/doc/omnetpp/api/index.html не похоже, что вышеперечисленное сработает.

Фактически, вы можете захотеть прочитать некоторые свойства элемента (информация, подробная информация, инкапсулированный пакет cPacket и т. Д.), Чтобы просмотреть сообщение.

0

По вопросам рекламы [email protected]