簡體   English   中英

為什么我在 OMNeT++ 中會出現此類型不兼容錯誤?

[英]Why do I get this Incompatible Type error in OMNeT++?

這是錯誤:

錯誤:從不兼容的類型“o.netpp::cMessage”分配給“o.netpp::cMessage *”

這是我的代碼:

#include "computer.h"

Define_Module(Computer);

void Computer::initialize() {
    counter = 0;

    limit = 10;

    if (strcmp ("c1", getName())==0) {
       simtime_t F_delay = par ("F_delay");

       EV<<"Start Sending== \n";

       *msg = *createMessage();

        scheduleAt(simTime()+ F_delay, *msg);
    }
}

Computer::Computer() {
    my_msg = nullptr;
}

Computer::~Computer() {
  cancelAndDelete(my_msg);
}

void Computer::handleMessage(cMessage *msg) {

    if(msg->isSelfMessage()) {
        send (msg,"out");
    }
    else {
        counter ++;
        if (counter == limit) {

            EV<<"Limit is expired \n";

            delete msg;
        }
        else {
            EV << " my name  "<< getName()<< " \n";

            EV << "counter = "<< counter << " \n";

            simtime_t delay = par("delay");

            scheduleAt(simTime()+delay,msg);

            EV << "sending again "<<" \n";
        }
    }
}

cMessage Computer::createMessage() {
    cMessage *msg = new cMessage ("HELLO");

    return *msg;
}

void Computer::sendCopyOf(cMessage *msg) {
    cMessage *copy= (cMessage *)msg->dup();
    send (copy ,"out");
}

這個 function 應該返回一個指針,否則就是泄漏 memory

cMessage* Computer::createMessage() {
    cMessage *msg = new cMessage ("HELLO");

    return *msg;
}

這將修復您在此作業中提到的錯誤

*msg = *createMessage();

這可以是

msg = createMessage();

並記住當你完成delete msg時,否則你會泄露它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM