[英]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.