[英]Why do I get this Incompatible Type error in OMNeT++?
This is the error:这是错误:
error: assigning to 'o.netpp::cMessage *' from incompatible type 'o.netpp::cMessage'`
错误:从不兼容的类型“o.netpp::cMessage”分配给“o.netpp::cMessage *”
This is my code:这是我的代码:
#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");
}
This function should return a pointer, otherwise it is leaking memory这个 function 应该返回一个指针,否则就是泄漏 memory
cMessage* Computer::createMessage() {
cMessage *msg = new cMessage ("HELLO");
return *msg;
}
This will fix the error you mentioned during this assignment这将修复您在此作业中提到的错误
*msg = *createMessage();
which can just be这可以是
msg = createMessage();
and remember when you are done to delete msg
or you will leak it.并记住当你完成
delete msg
时,否则你会泄露它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.